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. Task-number: QTBUG-55583 Change-Id: Iabc2a72681c8157bb2f2fe500892853aa397106b Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
parent
181860e1af
commit
84ea00d470
@ -135,10 +135,12 @@ bool QGtk3Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWind
|
||||
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user