Question about sc/source/core/data/colorscale.cxx
Julien Nabet
serval2412 at yahoo.fr
Sat Dec 15 06:54:11 PST 2012
On 15/12/2012 15:39, Markus Mohrhard wrote:
> Hey,
>
>> I noticed these lines in file sc/source/core/data/colorscale.cxx
>> (because cppcheck report indicates that bNeedUpdate is reassigned before to
>> be used line 641)
>>
>> 637 void ScDataBarFormat::DataChanged(const ScRange& rRange)
>> 638 {
>> 639 bool bNeedUpdate = false;
>> 640
>> 641 bNeedUpdate = NeedUpdate(mpFormatData->mpUpperLimit.get());
>> 642 bNeedUpdate&= NeedUpdate(mpFormatData->mpLowerLimit.get());
>> 643
>> 644 bNeedUpdate&= GetRange().Intersects(rRange);
>> 645
>> 646 if(bNeedUpdate)
>> 647 {
>> 648 mpDoc->RepaintRange(GetRange());
>> 649 }
>> 650 }
>>
>> First I wonder if we shouldn't avoid to bitwise and and logical and. But
>> above all, shouldn't it be logical OR?
> Only for the first one. For the second one the OR is totally wrong and
> will force always a repainting which is a preformance nightmare.
Ok. I thought that 1 NeedUpdate should have triggered a RepaintRange.
The function really should be called NeedPerhapsUpdate (just kidding of
course :-))
>
> So I would rather put:
> if( (NeedUpdate(mpFormatData->mpUpperLimit.get()))
> || (NeedUpdate(mpFormatData->mpLowerLimit.get())) ||
> (GetRange().Intersects(rRange)) )
> {
> mpDoc->RepaintRange(GetRange());
> }
>
> What do you think?
> Implemented a correct version with 4f901a2f451a552853c1dd38309dd55b22616fdd.
Thank you Markus for the patch and for your feedback.
Julien
More information about the LibreOffice
mailing list