Closed Bug 365018 Opened 18 years ago Closed 18 years ago

Drop down menus flicker in preference panel when switching from one panel to another

Categories

(Firefox :: Settings UI, defect)

2.0 Branch
PowerPC
macOS
defect
Not set
trivial

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: me, Unassigned)

References

Details

(Keywords: regression)

User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2pre) Gecko/20061223 Firefox/2.0.0.2pre Build Identifier: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.2pre) Gecko/20061223 Firefox/2.0.0.2pre Drop down menus (where exist) in the preference panel flickers for a split second when switching from one panel to another. Examples would be the "Default font" menu under "Content", and "Accept cookies from ..." under "Privacy". Reproducible: Always Steps to Reproduce: 1. Open Preference Panel 2. Switch between panels with drop down menus, such as "main", "content", "privacy", etc. 3. Actual Results: Drop down menus flickers once when panel first appears Expected Results: No flicker at all. I've narrowed it down using official nightlies to 2006-11-12-06-mozilla1.8 working ok, but 2006-11-13-03-mozilla1.8 flickers. Regression likely introduced by https://bugzilla.mozilla.org/show_bug.cgi?id=348304 checked in that period. This also means that the official Firefox 2.0.0.0 does *NOT* exhibit this behavior, but 2.0.0.1 does. Further, Thunderbird 2.0b1 also exhibits this problem.
Version: unspecified → 2.0 Branch
Ok. Confirming that backing out the aforementioned bug (348304) allows the preference panel to work as expected. (I tested with home-made builds)
Blocks: 348304
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: regression
Smaug, any idea what's up here?
Flags: blocking1.8.1.2?
Flags: blocking1.8.0.10?
Flags: blocking-firefox3?
I think because of some async stuff bug 348304 added, the size of the dropdown menu is updated after a panel is first time "loaded", and that causes some flickering. I don't have a mac, and haven't seen the problem on Windows or Linux. Actually I tested one mac too, and couldn't see any problems there...
So what's flickering? The actual dropdown, or the place where it drops down from? Also, did you test trunk or branch builds? I wouldn't be all that surprised if there is no problem on trunk...
(In reply to comment #4) > Also, did you test trunk or branch builds? I wouldn't be all that surprised if > there is no problem on trunk... > It was a 2.0.0.1 running on a mac. And I've tested 2.0.0.1 and trunk on Linux and Windows and haven't seen any problems. So to me it is not quite clear what the problem actually is, but hopefully someone who can reproduce the bug can comment...
Boris, Smaug, thanks for looking into this. I downloaded the latest nightlies for both branch and trunk (2007-02-04-07-mozilla1.8 and 2007-02-04-04-trunk respectively) and still find the problem on the *branch*. Tested both with new profiles each. With the *branch* builds, it's only the dropdown menus - the first thing you see before you click on anything. I don't know if you call that "actual dropdown" or "place where it drops down from". But you don't have to click on the dropdown to see it. Just switch to a preference panel that has a dropdown menu and it will flicker for a second. With the *trunk* builds, the entire preference panel flickers when switching from one panel to the next. I believe that is a known issue with the move to thebes (I think), but I don't use the trunk much, so I can't really comment on that. Once again, if I backed out bug 348304 and built my own, then the flicker is gone. I see this behaviour on a G4 and a G5, don't have any other machines to test with.
So what does the flicker look like? Does it look like the dropdown actually drops down for a sec and then disappears? Or does it look like the combobox width or height is wrong for a sec and then corrects itself?
I'll just copy/paste/edit your description - "It look like the combobox *width* is wrong for a sec and then corrects itself."
Hmm.... smaug, when do we trigger menu generation? Is it something that has to happen after frame construction, basically? Would it be possible/safe for presshell to flush out the generation before processing reflow commands?
Menu generation is triggered during reflow, and before 348304, it was really done during reflow by setting an attribute :(
Could we use a reflow callback instead of a completely asynchronous event?
Reflow callbacks are handled in DidDoReflow, and generating menus (== modifying DOM by setting attributes) there would be pretty unsafe :(
Nominating for the next round. Let's try to get a handle on this for 1.8.1.3/1.8.0.12.
Flags: blocking1.8.1.3?
Flags: blocking1.8.1.2?
Flags: blocking1.8.0.11?
Flags: blocking1.8.0.10?
Well... 5947 void 5948 PresShell::DidDoReflow() 5949 { 5950 HandlePostedAttributeChanges(); 5951 HandlePostedReflowCallbacks(); So it better be sorta safe -- we already do attribute changes there. ;)
Fortunately PostedAttributeChanges are used only for nsGfxScrollFrameInner::SetScrollbarEnabled, which is called for native anonymous content so mutation events don't propagate... Have to file a bug to remove HandlePostedReflowChanges.
I am seeing this on trunk build from 20070205 on Mac. I do NOT see it on 2.0.0.1. The category menu isn't really flickering, it's more like jumping up and down. On Mac, the bottom of the Prefs dialog window slides up and down to adjust to the various category sizes. When it incrementally does that, the dialog window title bar flickers (disappears and reappears). I response, the Category menu bar rapidly jumps up(no title bar present) to fill the missing title bar space and then back down (title bar present) until the dialog finishes resizing.
So perhaps we should post the async instantiate event from frame construction, not reflow? And process them in the presshell before entering reflow? That is, replace an event with just an annotation in the presshell?
Not going to block the branches for a minor cosmetic problem with no owner. If you get a trunk fix that's branch-safe you can ask for approval on the patch.
Severity: normal → trivial
Flags: blocking1.8.1.4?
Flags: blocking1.8.1.4-
Flags: blocking1.8.0.12?
Flags: blocking1.8.0.12-
Still broken in 2.0.0.3, but the latest 2.0.0.4pre builds don't appear to have this problem anymore. It looks like either bug 375196 and/or bug 336744 resolved the issue. I can't view either bug, as they are security bugs, but at least it appears to be working properly now. Thanks for looking. Closing bug as WFM.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → WORKSFORME
If this is fixed it was probably bug 368501.
Flags: blocking-firefox3?
You need to log in before you can comment on or make changes to this bug.