Show a warning when a destroyed window is shown
authorAaron Erhardt <aaron.erhardt@t-online.de>
Sun, 16 Oct 2022 12:24:27 +0000 (14:24 +0200)
committerAaron Erhardt <aaron.erhardt@t-online.de>
Sun, 16 Oct 2022 12:24:27 +0000 (14:24 +0200)
Showing a destroyed window might cause an application to
behave in an unexpected manner. For example, showing a
dialog after it has been closed by the user might cause the
application to freeze. The warning will help developers to
track down the issue.

Signed-off-by: Aaron Erhardt <aaron.erhardt@t-online.de>
gtk/gtkwindow.c

index 21e0ac30369c0b9969c2bcd122d7ee811029956f..8da622543f56fb56c68d7ea1bea6a541cc890168 100644 (file)
@@ -3811,6 +3811,10 @@ gtk_window_show (GtkWidget *widget)
   GtkWindow *window = GTK_WINDOW (widget);
   GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
 
+  guint i;
+  if (!g_list_store_find (toplevel_list, window, &i))
+    g_warning("The window is shown after it has been destroyed. This will leave the window in an inconsistent state.");
+
   _gtk_widget_set_visible_flag (widget, TRUE);
 
   gtk_css_node_validate (gtk_widget_get_css_node (widget));