summaryrefslogtreecommitdiff
path: root/mozilla-1567434-2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mozilla-1567434-2.patch')
-rw-r--r--mozilla-1567434-2.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/mozilla-1567434-2.patch b/mozilla-1567434-2.patch
new file mode 100644
index 0000000..966118a
--- /dev/null
+++ b/mozilla-1567434-2.patch
@@ -0,0 +1,35 @@
+diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
+--- a/widget/gtk/nsWindow.cpp
++++ b/widget/gtk/nsWindow.cpp
+@@ -1208,6 +1208,7 @@
+ if (frame) {
+ menuPopupFrame = do_QueryFrame(frame);
+ }
++
+ // The popup is not fully created yet (we're called from
+ // nsWindow::Create()) or we're toplevel popup without parent.
+ // In both cases just use parent which was passed to nsWindow::Create().
+@@ -1217,10 +1218,22 @@
+ return GTK_WIDGET(parentWidget);
+ }
+
++ LOG(("...[%p] is %s\n", (void*)this,
++ menuPopupFrame->IsContextMenu() ? "context menu" : "popup"));
++
+ nsWindow* parentWindow =
+ static_cast<nsWindow*>(menuPopupFrame->GetParentMenuWidget());
+ LOG(("...[%p] GetParentMenuWidget() = %p\n", (void*)this, parentWindow));
+
++ // If the popup is a regular menu but GetParentMenuWidget() returns
++ // nullptr which means it's connected non-menu parent
++ // (bookmark toolbar for instance).
++ // In this case use a parent given at nsWindow::Create().
++ if (!parentWindow && !menuPopupFrame->IsContextMenu()) {
++ parentWindow =
++ get_window_for_gtk_widget(GTK_WIDGET(mToplevelParentWindow));
++ }
++
+ if (!parentWindow) {
+ LOG(("...[%p] using active/visible popups as a parent [%p]\n",
+ (void*)this, gVisibleWaylandPopupWindows->data));
+
bgstack15