Closed Bug 392652 Opened 12 years ago Closed 12 years ago
XULPopup Manager::Rollup() should synchronously hide popups
Right now nsXULPopupManager::Rollup() hides popups asynchronously. This can be problematic in at least the following order of events... 1. right mouse down event 2. context menu event 3. right mouse down event 4. context menu event The problem here is that after event #2 a popup is showing, then event #3 results in an async popup hide, which is processed *after* event #4. You end up with no context menu open when there should be one open from #4. nsXULPopupManager::Rollup() should probably do synchronous hiding. Apparently we can do that so long as nobody calls it from certain bad places. I don't remember what all of those places are so I'll let somebody who knows list that out. Enn?
Flags: blocking1.9? → blocking1.9-
I looked at all the callers of Rollup. There are only a couple outside of the widget code which I've changed in this patch. The others are in widget which are ok with calling this synchronously.
Comment on attachment 279781 [details] [diff] [review] call rollup synchronously Looks reasonable
Comment on attachment 279781 [details] [diff] [review] call rollup synchronously a=mconnor on behalf of drivers
Attachment #279781 - Flags: approval1.9? → approval1.9+
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
OS: Mac OS X → All
Hardware: PC → All
Target Milestone: --- → mozilla1.9 M9
Version: unspecified → Trunk
You need to log in before you can comment on or make changes to this bug.