diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-08-24 13:21:17 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-08-24 13:21:17 +0200 |
commit | 74c6c585ab519e3314bdf6b0fa23d8aa757b78a5 (patch) | |
tree | f9a7b8706668b5f587fe6191520cb61f313c487a | |
parent | b4343ea955abe66133bcb3562727908031c23dea (diff) | |
download | UXP-74c6c585ab519e3314bdf6b0fa23d8aa757b78a5.tar UXP-74c6c585ab519e3314bdf6b0fa23d8aa757b78a5.tar.gz UXP-74c6c585ab519e3314bdf6b0fa23d8aa757b78a5.tar.lz UXP-74c6c585ab519e3314bdf6b0fa23d8aa757b78a5.tar.xz UXP-74c6c585ab519e3314bdf6b0fa23d8aa757b78a5.zip |
Introduce ui.menu.allow_content_scroll
When true, overrides the OS convention to prevent scrolling of content when contextual menus are open.
This resolves #730.
-rw-r--r-- | modules/libpref/init/all.js | 4 | ||||
-rw-r--r-- | widget/windows/nsWindow.cpp | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index a3daae59e..1eee30210 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -2209,6 +2209,10 @@ pref("ui.key.contentAccess", 5); pref("ui.key.menuAccessKeyFocuses", false); // overridden below pref("ui.key.saveLink.shift", true); // true = shift, false = meta +// When true, overrides OS convention to lock content scrolling +// if a contextual menu is open. +pref("ui.menu.allow_content_scroll", false); + // Disable page loading activity cursor by default. pref("ui.use_activity_cursor", false); diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index b2bb59bd3..5ce0117b0 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -366,6 +366,9 @@ static const int32_t kResizableBorderMinSize = 3; // Cached pointer events enabler value, True if pointer events are enabled. static bool gIsPointerEventsEnabled = false; +// Cached scroll outside menu enabler value, True if scrolling is allowed. +static bool gIsScrollingOutsideEnabled = false; + // We should never really try to accelerate windows bigger than this. In some // cases this might lead to no D3D9 acceleration where we could have had it // but D3D9 does not reliably report when it supports bigger windows. 8192 @@ -665,6 +668,10 @@ nsWindow::nsWindow() Preferences::AddBoolVarCache(&gIsPointerEventsEnabled, "dom.w3c_pointer_events.enabled", gIsPointerEventsEnabled); + Preferences::AddBoolVarCache(&gIsScrollingOutsideEnabled, + "ui.menu.allow_content_scroll", + gIsScrollingOutsideEnabled); + } // !sInstanceCount mIdleService = nullptr; @@ -7703,7 +7710,8 @@ nsWindow::DealWithPopups(HWND aWnd, UINT aMessage, break; } } - return consumeRollupEvent; + // Consume event if appropriate unless overridden. + return consumeRollupEvent && !gIsScrollingOutsideEnabled; case WM_ACTIVATEAPP: break; |