firefox/mozilla-1566876-webrtc-ind....

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: