window: Unset transient parent in set_display()
authorBenjamin Otte <otte@redhat.com>
Wed, 1 Nov 2017 17:16:11 +0000 (18:16 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 1 Nov 2017 17:17:11 +0000 (18:17 +0100)
If somebody changes a window's display, the transient parent cannot
stay if it's on a different display.

gtk/gtkwindow.c

index c9716a698b58951707455c69e80b5303b74dcb14..8aba4f8d52c56084fb02527015abf4858620c048 100644 (file)
@@ -9966,6 +9966,9 @@ gtk_window_set_display (GtkWindow  *window,
   if (_gtk_widget_get_realized (widget))
     gtk_widget_unrealize (widget);
 
+  if (priv->transient_parent && gtk_widget_get_display (GTK_WIDGET (priv->transient_parent)) != display)
+    gtk_window_set_transient_for (window, NULL);
+
   gtk_window_free_key_hash (window);
   priv->display = display;
 #ifdef GDK_WINDOWING_X11