fdo#47907: fix flickering scrolling in Basic IDE

Noel Power nopower at suse.com
Thu Aug 2 09:04:45 PDT 2012


On 02/08/12 15:31, Noel Power wrote:
> Hi János,
>
> On 31/07/12 12:34, János Uray wrote:
>> Again? Oh, yes.
>> Now here it is.
>>
>> On Tue, Jul 31, 2012 at 11:10 AM, Noel Power <nopower at suse.com 
>> <mailto:nopower at suse.com>> wrote:
>>
>>     Hi János
>>     you forgot to attach the patch :-)
>>
>>     On 30/07/12 19:04, János Uray wrote:
>>>     This patch solves this bug:
>>>     https://bugs.freedesktop.org/show_bug.cgi?id=47907
>>>
>>>     The text was flickering because Window::Invalidate() clears the
>>>     client area by default. To prevent this, I've added an
>>>     INVALIDATE_NOERASE parameter to Invalidate() calls.
>>>     On the other hand, the background still needed to be erased
>>>     outside the text: the indentation space and the rest of the line.
>>
> seems to work better :-), imho still is not as smooth as 3.4, I would 
> love to know *why* we get this behaviour now in >=3.5, is something 
> triggering Resize() more often now ( and why indeed is Resize even 
> called when scrolling ). Additionally I am a but nervous about changes 
> to the TextEngine  ( a piece of code I have no familiarity with at all 
> ). Saying that the change you made seems quite small ( despite the 
> confusing diff due to the whitespace changes ) I suppose it is the 
> last part of the patch that is really necessary. But still it just 
> feels wrong that we need to tweak the TextEngine and I wonder are we 
> correcting a side affect rather than fixing the root cause
well it seems that

--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -682,7 +682,6 @@ void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, 
const SfxHint& rHint )
                  ( 0, 
pModulWindow->GetBreakPointWindow().GetCurYOffset() - 
pEditView->GetStartDocPos().Y() );
              pModulWindow->GetLineNumberWindow().DoScroll
                  ( 0, 
pModulWindow->GetLineNumberWindow().GetCurYOffset() - 
pEditView->GetStartDocPos().Y() );
-            pModulWindow->Invalidate();
          }
          else if( rTextHint.GetId() == TEXT_HINT_TEXTHEIGHTCHANGED )
          {


solves the problem, I see no side affects, however since you have proved 
you are quite adept and talented at handling complicated drawing bits, 
notice if you scroll the window ( by dragging the scroll bar ) if you 
have the linenumbers enabled they flash and flicker and even disappear 
while scrolling, it would be great to get than nice and smooth

Noel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120802/cf37cd24/attachment.html>


More information about the LibreOffice mailing list