summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-08-24 13:21:17 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-08-24 13:21:17 +0200
commit74c6c585ab519e3314bdf6b0fa23d8aa757b78a5 (patch)
treef9a7b8706668b5f587fe6191520cb61f313c487a
parentb4343ea955abe66133bcb3562727908031c23dea (diff)
downloadUXP-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.js4
-rw-r--r--widget/windows/nsWindow.cpp10
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;