[gtk+] x11: Make unsetting transient-for work
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] x11: Make unsetting transient-for work
- Date: Thu, 14 Dec 2017 03:13:14 +0000 (UTC)
commit d7f34874abe0b53f7eaf18a70d89145e06883ef6
Author: Benjamin Otte <otte redhat com>
Date: Thu Dec 14 02:59:58 2017 +0100
x11: Make unsetting transient-for work
... and just unset it from GtkWindow instead of fiddling with
properties.
gdk/x11/gdkwindow-x11.c | 12 ++++++++++--
gtk/gtkwindow.c | 3 +--
2 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index a308618..d56c9bd 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -2448,11 +2448,19 @@ static void
gdk_x11_window_set_transient_for (GdkWindow *window,
GdkWindow *parent)
{
- if (!GDK_WINDOW_DESTROYED (window) && !GDK_WINDOW_DESTROYED (parent) &&
- WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
+ if (GDK_WINDOW_DESTROYED (window) ||
+ !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
+ return;
+
+ /* XSetTransientForHint() doesn't allow unsetting, so do it manually */
+ if (!GDK_WINDOW_DESTROYED (parent))
XSetTransientForHint (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
GDK_WINDOW_XID (parent));
+ else
+ XDeleteProperty (GDK_WINDOW_XDISPLAY (window),
+ GDK_WINDOW_XID (window),
+ gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
"WM_TRANSIENT_FOR"));
}
GdkCursor *
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 94c1ba4..a429ba3 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -3382,8 +3382,7 @@ gtk_window_transient_parent_unrealized (GtkWidget *parent,
GtkWidget *window)
{
if (_gtk_widget_get_realized (window))
- gdk_property_delete (_gtk_widget_get_window (window),
- gdk_atom_intern_static_string ("WM_TRANSIENT_FOR"));
+ gdk_window_set_transient_for (_gtk_widget_get_window (window), NULL);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]