comparison gtk4/dw.c @ 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 7b04d1b9f2eb
comparison
equal deleted inserted replaced
2340:d797d1cec06b 2341:1a630cddf384
6355 void API dw_taskbar_delete(HWND handle, HICN icon) 6355 void API dw_taskbar_delete(HWND handle, HICN icon)
6356 { 6356 {
6357 /* TODO: Removed in GTK4.... no replacement? */ 6357 /* TODO: Removed in GTK4.... no replacement? */
6358 } 6358 }
6359 6359
6360 /* Make sure the widget is out of the dirty list if it is destroyed */
6361 static void _dw_render_destroy(GtkWidget *widget, gpointer data)
6362 {
6363 _dw_dirty_list = g_list_remove(_dw_dirty_list, widget);
6364 }
6365
6360 /* 6366 /*
6361 * Creates a rendering context widget (window) to be packed. 6367 * Creates a rendering context widget (window) to be packed.
6362 * Parameters: 6368 * Parameters:
6363 * id: An id to be used with dw_window_from_id. 6369 * id: An id to be used with dw_window_from_id.
6364 * Returns: 6370 * Returns:
6369 DW_FUNCTION_RETURN(dw_render_new, HWND) 6375 DW_FUNCTION_RETURN(dw_render_new, HWND)
6370 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG) 6376 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
6371 { 6377 {
6372 GtkWidget *tmp = gtk_drawing_area_new(); 6378 GtkWidget *tmp = gtk_drawing_area_new();
6373 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid)); 6379 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
6380 g_signal_connect(G_OBJECT(tmp), "destroy", G_CALLBACK(_dw_render_destroy), NULL);
6374 gtk_widget_set_can_focus(tmp, TRUE); 6381 gtk_widget_set_can_focus(tmp, TRUE);
6375 gtk_widget_show(tmp); 6382 gtk_widget_show(tmp);
6376 if(_DWDefaultFont) 6383 if(_DWDefaultFont)
6377 dw_window_set_font(tmp, _DWDefaultFont); 6384 dw_window_set_font(tmp, _DWDefaultFont);
6378 DW_FUNCTION_RETURN_THIS(tmp); 6385 DW_FUNCTION_RETURN_THIS(tmp);