Closed Bug 982121 Opened 12 years ago Closed 9 years ago

Scrolling while menupopup is open separates it from menulist-button

Categories

(Core :: Widget: Win32, defect)

x86_64
Windows 7
defect
Not set
normal

Tracking

()

VERIFIED FIXED
mozilla48
Tracking Status
firefox48 --- verified

People

(Reporter: elbart, Assigned: Gijs, Mentored)

References

(Blocks 1 open bug, Regressed 2 open bugs)

Details

(Keywords: uiwanted)

Attachments

(2 files)

STR: - Open the browser and hit Ctrl+Shift+I (Developer Tools, other locales than en-US may have different shortcuts) - Go into the options (gear-icon) - Open the "Default color unit"-menulist and scroll with the mousewheel. ER: The menupopup either sticks to the menulist-button which invoked it, or it closes, similar to the menupopups in HTML-documents. AR: The opened menupopup stays where it is and the background is being scrolled, thus detaching the menupopup from the menulist-button. Additionally, there are now two areas where the menulist-hover-highlight is being registered: - One area is where the menupopup is located - The other area is where the menupopup is supposed to be if it still was attached to the menulist-button. Screencap: http://i.imgur.com/wMmO2Qo.gif Another area where this is happening is in "Options" under "Applications" with the "Action"-menulists once the richlist has enough items to be scrollable. Addons are also affected, mostly in their options, i.e. - AdBlock Plus (Filter subscriptions -> Actions) - BetterStop - Configuration Mania (Browser -> Page control -> Color Management) - Download Panel Tweaker - Download Panel Tweaks - EnhancedSteam
Status: UNCONFIRMED → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
This is just implementing the Windows version of bug 631473.
Blocks: 430806
Status: RESOLVED → REOPENED
Component: XUL → Widget: Win32
Depends on: 631473
Ever confirmed: true
Resolution: DUPLICATE → ---
Attached image menupopup_back.gif
Another way to cause the detachment: - Go into any "More"-section of a plugin (Flash etc.). - Open the state-menupopup. - Hit the backwards-button of the mouse.
This bug involves calling ShouldConsumeOnMouseWheelEvent within nsWindow::DealWithPopups and returning true if so.
Mentor: enndeakin
Blocks: 1258355
No longer blocks: 1258355
https://reviewboard.mozilla.org/r/41803/#review38255 ::: widget/windows/nsWindow.cpp:7509 (Diff revision 1) > > case WM_MOUSEWHEEL: > case WM_MOUSEHWHEEL: > + // Check if we should consume this event even if we don't roll-up: > + shouldConsumeMouseWheel = > + rollupListener->ShouldConsumeOnMouseWheelEvent(); This should happen inside the EventIsInsideWindow part as it only applies to events outside the popup window. ::: widget/windows/nsWindow.cpp:7662 (Diff revision 1) > sRollupMsgWnd = nullptr; > > // If we are NOT supposed to be consuming events, let it go through > - if (consumeRollupEvent && nativeMessage != WM_RBUTTONDOWN) { > + if (shouldConsumeMouseWheel || > + (consumeRollupEvent && nativeMessage != WM_RBUTTONDOWN)) { > *aResult = MA_ACTIVATE; This actually shouldn't be setting aResult (MA_ACTIVATE only applies to the WM_MOUSEACTIVATE message) but I guess the existing code does this so this is ok for now. ::: widget/windows/nsWindow.cpp:7663 (Diff revision 1) > > // If we are NOT supposed to be consuming events, let it go through > - if (consumeRollupEvent && nativeMessage != WM_RBUTTONDOWN) { > + if (shouldConsumeMouseWheel || > + (consumeRollupEvent && nativeMessage != WM_RBUTTONDOWN)) { > *aResult = MA_ACTIVATE; > return true; For consistency with other platforms, we should just use the same 'consumeRollupEvent' variable. So move the declaration of it earlier. See gtk/nsWindow.cpp CheckForRollup() for the logic here.
This dropped off my radar for some reason. :-\
Assignee: nobody → gijskruitbosch+bugs
Flags: needinfo?(gijskruitbosch+bugs)
Comment on attachment 8733534 [details] MozReview Request: Bug 982121 - consume wheel events when popups are open, r?enndeakin Review request updated; see interdiff: https://reviewboard.mozilla.org/r/41803/diff/1-2/
Attachment #8733534 - Flags: review?(enndeakin)
Flags: needinfo?(gijskruitbosch+bugs)
Attachment #8733534 - Flags: review?(enndeakin) → review+
Comment on attachment 8733534 [details] MozReview Request: Bug 982121 - consume wheel events when popups are open, r?enndeakin https://reviewboard.mozilla.org/r/41803/#review42311
Depends on: 1263982
Depends on: 1263989
Depends on: 1263996
Neil, should we back this out considering the regressions Alice filed?
Flags: needinfo?(enndeakin)
Depends on: 1264003
Why behavior is different between in-content-preferences/dev-tools and ordinary html? [1] Menulist(Dev-tools/in-content prefs) popup is sticking when I turn mouse wheel. [2] html select-option is rolling up when I turn mouse wheel. I think rolling-up is better than sticking the popup.
Status: REOPENED → RESOLVED
Closed: 12 years ago9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla48
This fix causes huge side effects of UX. Please reconsider from the point of view of UX.
Keywords: uiwanted
Flags: needinfo?(gijskruitbosch+bugs)
Depends on: 1264141
(In reply to Alice0775 White from comment #16) > This fix causes huge side effects of UX. > Please reconsider from the point of view of UX. I think Neil is better able to make a decision here than me.
Flags: needinfo?(gijskruitbosch+bugs)
All of the regression bugs except 1263982 are just variations of the same thing, about the mousewheel not scrolling while a context menu is open. This bug is just the Windows version of a bug (631473 and 849544), that was fixed on Mac and Linux a while ago, but never fixed on Windows. The mousewheel should allow scrolling when an arrowpanel or autocomplete panel is open, but not when a menu or context menu is open. This is the behaviour seen on other applications on all three OS's. Even if we decided that it would be useful to break this OS convention, this bug only changed Windows behaviour, and I would think we would want to break the convention consistently on all platforms. For bug 1263982, we can remove rolluponmousewheel="true" to make this consistent with <select> elements as well. That was likely added to be consistent with non-e10s popups. There has always been a bit of a fight over the <select> element regarding whether to match the <menulist> element which more accurately matches OS behaviour versus the non-e10s <select> implementation which does not.
Flags: needinfo?(enndeakin)
Depends on: 1265308
Depends on: 1273012
QA Whiteboard: [good first verify]
I have reproduced this bug with Firefox Nightly 30.0a1 (Build ID:20140311030201) on Windows 8.1, 64-bit. Verified as fixed with Firefox beta 48.0b6 (Build ID: 20160706215822) Mozilla/5.0 (Windows NT 6.3; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
QA Whiteboard: [good first verify] → [good first verify][testday-20160708]
Thanks Mohammad Maruf Islam for helping us. I also verified this issue on Firefox 48.0b6 and on Windows 7 x64 and it's no longer reproducible. I am marking this issue Verified Fixed.
Status: RESOLVED → VERIFIED
Depends on: 1303903
bug 982121 was only fix visual issue. However, bug 982121 destroyed the function itself of the browsere. I think that the importance is the function of the browser, not visual issue. backing out of bug 982121 is needed.
Depends on: 1470777
No longer depends on: 1470777
No longer depends on: 1273012
Regressions: 1273012
Regressions: 1719071
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: