37 lines
1.2 KiB
Diff
37 lines
1.2 KiB
Diff
|
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||
|
--- a/widget/gtk/nsWindow.cpp
|
||
|
+++ b/widget/gtk/nsWindow.cpp
|
||
|
@@ -3504,12 +3504,6 @@
|
||
|
mBounds = aRect;
|
||
|
ConstrainSize(&mBounds.width, &mBounds.height);
|
||
|
|
||
|
- // eWindowType_child is not supported on Wayland. Just switch to toplevel
|
||
|
- // as a workaround.
|
||
|
- if (!mIsX11Display && mWindowType == eWindowType_child) {
|
||
|
- mWindowType = eWindowType_toplevel;
|
||
|
- }
|
||
|
-
|
||
|
// figure out our parent window
|
||
|
GtkWidget* parentMozContainer = nullptr;
|
||
|
GtkContainer* parentGtkContainer = nullptr;
|
||
|
@@ -3543,6 +3537,18 @@
|
||
|
topLevelParent = GTK_WINDOW(gtk_widget_get_toplevel(parentMozContainer));
|
||
|
}
|
||
|
|
||
|
+ if (!mIsX11Display) {
|
||
|
+ if (mWindowType == eWindowType_child) {
|
||
|
+ // eWindowType_child is not supported on Wayland. Just switch to toplevel
|
||
|
+ // as a workaround.
|
||
|
+ mWindowType = eWindowType_toplevel;
|
||
|
+ } else if (mWindowType == eWindowType_popup && !topLevelParent) {
|
||
|
+ // Workaround for Wayland where the popup windows always need to have
|
||
|
+ // parent window. For example webrtc ui is a popup window without parent.
|
||
|
+ mWindowType = eWindowType_toplevel;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
// ok, create our windows
|
||
|
switch (mWindowType) {
|
||
|
case eWindowType_dialog:
|
||
|
|