20c032f2ed
mozilla-1567434, mozilla-1573813, mozilla-1574036, mozilla-1576268). - Enable multiprocess compilation.
36 lines
1.4 KiB
Diff
36 lines
1.4 KiB
Diff
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));
|
|
|