Closed Bug 13749 Opened 21 years ago Closed 21 years ago

[PP] Linux - Moving mouse in browser window redraws scrollbars

Categories

(SeaMonkey :: General, defect, P3, minor)

x86
Linux

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: cpratt, Assigned: pavlov)

References

Details

Attachments

(1 obsolete file)

Build ID: 1999091308
Platform: RH Linux 6

To reproduce:
- Launch mozilla-apprunner
- Load nearly any page (mozilla.org works fine)
- Jiggle the mouse. That is, move it around inside the browser window without
mousing over the scrollbars in the sidebar or in the main browser window

Result: The scrollbars redraw themselves, flickering.

Expected result: as on Win32, the scrollbars should not redraw or flicker. That
behavior is undesirable.
QA Contact: leger → cpratt
*** Bug 14817 has been marked as a duplicate of this bug. ***
I think the scrollbar flashing happens when something triggers a repaint or a
cursor change.  For example, hovering over links (cursor change), menus, or
toolbar buttons (repaints).

Does this have something to do with gtk?
Getting into gdb and doing:

shar libgtk
break gtk_vscrollbar_draw_step_forw

was quite informative.  I see this function being called in three different
stack traces for things that don't involve scrolling (and I didn't test much at
all).  I see all three when I hover over links in my own web page (which
involves repainting in addition to mouse changing) and I see only the third of
them for hovering over buttons in the personal toolbar:

for link hovers on my homepage ( http://www.fas.harvard.edu/~dbaron/ ):

#0  0x4064ac25 in gtk_vscrollbar_draw_step_forw ()
#1  0x4060fead in gtk_range_draw_step_forw ()
#2  0x40610e34 in gtk_range_draw ()
#3  0x40659485 in gtk_marshal_NONE__POINTER ()
#4  0x4061d96b in gtk_signal_real_emit ()
#5  0x4061bc05 in gtk_signal_emit ()
#6  0x4064f688 in gtk_widget_draw ()
#7  0x405e8ae8 in gtk_layout_draw ()
#8  0x40659485 in gtk_marshal_NONE__POINTER ()
#9  0x4061d96b in gtk_signal_real_emit ()
#10 0x4061bc05 in gtk_signal_emit ()
#11 0x4064f688 in gtk_widget_draw ()
#12 0x405e8ae8 in gtk_layout_draw ()
#13 0x40659485 in gtk_marshal_NONE__POINTER ()
#14 0x4061d96b in gtk_signal_real_emit ()
#15 0x4061bc05 in gtk_signal_emit ()
#16 0x4064f688 in gtk_widget_draw ()
#17 0x4053cd51 in nsWidget::Invalidate (this=0x853fd50, aIsSynchronous=1)
    at nsWidget.cpp:763
#18 0x4099423a in nsWebShell::Repaint (this=0x853f5b8, aForce=1)
    at nsWebShell.cpp:1377

for link hovers on my homepage ( http://www.fas.harvard.edu/~dbaron/ ):

#0  0x4064ac25 in gtk_vscrollbar_draw_step_forw ()
#1  0x4060fead in gtk_range_draw_step_forw ()
#2  0x40610e34 in gtk_range_draw ()
#3  0x40659485 in gtk_marshal_NONE__POINTER ()
#4  0x4061d96b in gtk_signal_real_emit ()
#5  0x4061bc05 in gtk_signal_emit ()
#6  0x4064f688 in gtk_widget_draw ()
#7  0x405e8ae8 in gtk_layout_draw ()
#8  0x40659485 in gtk_marshal_NONE__POINTER ()
#9  0x4061d96b in gtk_signal_real_emit ()
#10 0x4061bc05 in gtk_signal_emit ()
#11 0x4064f688 in gtk_widget_draw ()
#12 0x405e8ae8 in gtk_layout_draw ()
#13 0x40659485 in gtk_marshal_NONE__POINTER ()
#14 0x4061d96b in gtk_signal_real_emit ()
#15 0x4061bc05 in gtk_signal_emit ()
#16 0x4064f688 in gtk_widget_draw ()
#17 0x405e8ae8 in gtk_layout_draw ()
#18 0x40659485 in gtk_marshal_NONE__POINTER ()
#19 0x4061d96b in gtk_signal_real_emit ()
#20 0x4061bc05 in gtk_signal_emit ()
#21 0x4064f688 in gtk_widget_draw ()
#22 0x405e8ae8 in gtk_layout_draw ()
#23 0x40659485 in gtk_marshal_NONE__POINTER ()
#24 0x4061d96b in gtk_signal_real_emit ()
#25 0x4061bc05 in gtk_signal_emit ()
#26 0x4064f688 in gtk_widget_draw ()
#27 0x4053d1d7 in nsWidget::InvalidateRegion (this=0x82fafc8,
    aRegion=0x82fb0c8, aIsSynchronous=1) at nsWidget.cpp:864
#28 0x4053d33c in nsWidget::Update (this=0x82fafc8) at nsWidget.cpp:893
#29 0x412b409f in nsViewManager::Composite (this=0x82fadc0)
    at nsViewManager.cpp:1399
#30 0x412af675 in vm_timer_callback (aTimer=0x8533618, aClosure=0x82fadc0)
    at nsViewManager.cpp:84

for link hovers on my homepage and for personal toolbar hovers:

#0  0x4064ac25 in gtk_vscrollbar_draw_step_forw ()
#1  0x4060fead in gtk_range_draw_step_forw ()
#2  0x40610e34 in gtk_range_draw ()
#3  0x40659485 in gtk_marshal_NONE__POINTER ()
#4  0x4061d96b in gtk_signal_real_emit ()
#5  0x4061bc05 in gtk_signal_emit ()
#6  0x4064f688 in gtk_widget_draw ()
#7  0x405e8ae8 in gtk_layout_draw ()
#8  0x40659485 in gtk_marshal_NONE__POINTER ()
#9  0x4061d96b in gtk_signal_real_emit ()
#10 0x4061bc05 in gtk_signal_emit ()
#11 0x4064f688 in gtk_widget_draw ()
#12 0x405e8ae8 in gtk_layout_draw ()
#13 0x40659485 in gtk_marshal_NONE__POINTER ()
#14 0x4061d96b in gtk_signal_real_emit ()
#15 0x4061bc05 in gtk_signal_emit ()
#16 0x4064f688 in gtk_widget_draw ()
#17 0x405e8ae8 in gtk_layout_draw ()
#18 0x40659485 in gtk_marshal_NONE__POINTER ()
#19 0x4061d96b in gtk_signal_real_emit ()
#20 0x4061bc05 in gtk_signal_emit ()
#21 0x4064f688 in gtk_widget_draw ()
#22 0x405e8ae8 in gtk_layout_draw ()
#23 0x40659485 in gtk_marshal_NONE__POINTER ()
#24 0x4061d96b in gtk_signal_real_emit ()
#25 0x4061bc05 in gtk_signal_emit ()
#26 0x4064f688 in gtk_widget_draw ()
#27 0x4064f369 in gtk_widget_idle_draw ()
#28 0x406c4a49 in g_idle_dispatch ()
#29 0x406c3a86 in g_main_dispatch ()
#30 0x406c4041 in g_main_iterate ()
#31 0x406c41e1 in g_main_run ()
#32 0x405f07a9 in gtk_main ()
#33 0x40527f69 in nsAppShell::Run (this=0x80a1c28) at nsAppShell.cpp:385
BTW, my debug build is a little old:  from the evening of 1999-10-17.
Regarding the first stack trace - my memory is that nsWebShell::Repaint was
called from something in libraptorhtml, which I don't have the memory to load.
I'm don't know why that happened, but it probably shouldn't have.  Commenting
out the "mWindow->Invalidate(aForce)" in that method didn't seem to have any
adverse effects on anything.  In fact, beginning it with "return NS_OK" didn't
cause any noticeable problems either.  What does it do?
I'm now unable to duplicate the first two by link hovers.  However, putting a
breakpoint on gtk_vscrollbar_draw_step_forw shows some interesting things during
a resize...
Assignee: don → pavlov
Status: NEW → ASSIGNED
Whiteboard: Fixes in Blizzard's branch
Target Milestone: M12
this will be fixed when we land blizzard and owen's branch
Whiteboard: Fixes in Blizzard's branch → 11/16/99
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
fixed
Status: RESOLVED → VERIFIED
Whiteboard: 11/16/99
Using the 1999121508 build on Linux, I don't see any flickering scrollbars.
Marking verified; thanks, pavlov!
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.