changeset 2341:1a630cddf384

GTK4: Remove render widgets from the dirty list when they are destroyed.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 03 Mar 2021 07:38:48 +0000
parents d797d1cec06b
children 5437aed23151
files gtk4/dw.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/gtk4/dw.c	Wed Mar 03 03:59:20 2021 +0000
+++ b/gtk4/dw.c	Wed Mar 03 07:38:48 2021 +0000
@@ -6357,6 +6357,12 @@
    /* TODO: Removed in GTK4.... no replacement? */
 }
 
+/* Make sure the widget is out of the dirty list if it is destroyed */
+static void _dw_render_destroy(GtkWidget *widget, gpointer data)
+{
+   _dw_dirty_list = g_list_remove(_dw_dirty_list, widget);
+}
+
 /*
  * Creates a rendering context widget (window) to be packed.
  * Parameters:
@@ -6371,6 +6377,7 @@
 {
    GtkWidget *tmp = gtk_drawing_area_new();
    g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
+   g_signal_connect(G_OBJECT(tmp), "destroy", G_CALLBACK(_dw_render_destroy), NULL);
    gtk_widget_set_can_focus(tmp, TRUE);
    gtk_widget_show(tmp);
    if(_DWDefaultFont)