File: gtkdialogs_wayland.diff

package info (click to toggle)
qtbase-opensource-src 5.7.1%2Bdfsg-3%2Bdeb9u2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 283,652 kB
  • sloc: cpp: 1,754,662; ansic: 433,142; xml: 100,291; python: 9,650; sh: 7,671; java: 6,543; asm: 4,283; perl: 2,217; yacc: 1,733; lex: 1,194; makefile: 333; objc: 70
file content (26 lines) | stat: -rw-r--r-- 1,181 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Description: QGtk3Dialog: don't crash on Wayland
 Check if it's an X11 window before calling XSetTransientForHint().
 No transient parent will be set for GTK+ dialogs on Wayland. That
 has to be implemented separately.
Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=84ea00d47049d882
Last-Update: 2017-01-06

--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
@@ -129,10 +129,12 @@
 
     GdkWindow *gdkWindow = gtk_widget_get_window(gtkWidget);
     if (parent) {
-        GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow);
-        XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay),
-                             gdk_x11_window_get_xid(gdkWindow),
-                             parent->winId());
+        if (GDK_IS_X11_WINDOW(gdkWindow)) {
+            GdkDisplay *gdkDisplay = gdk_window_get_display(gdkWindow);
+            XSetTransientForHint(gdk_x11_display_get_xdisplay(gdkDisplay),
+                                 gdk_x11_window_get_xid(gdkWindow),
+                                 parent->winId());
+        }
     }
 
     if (modality != Qt::NonModal) {