ui/gtk/toolkit.c

changeset 1046
94df16a7fff2
parent 1042
f3e2811ecf3a
--- a/ui/gtk/toolkit.c	Sun Jan 11 15:10:20 2026 +0100
+++ b/ui/gtk/toolkit.c	Mon Jan 12 20:54:27 2026 +0100
@@ -33,6 +33,7 @@
 
 #include "toolkit.h"
 #include "toolbar.h"
+#include "window.h"
 #include "icon.h"
 #include "../common/document.h"
 #include "../common/properties.h"
@@ -145,27 +146,33 @@
 #endif
 
 void ui_show(UiObject *obj) {
-    gboolean visible = gtk_widget_is_visible(obj->widget);
-    
+    gboolean visible = FALSE;
     uic_check_state_widgets(obj->ctx);
+    if(obj->widget) {
+        visible = gtk_widget_is_visible(obj->widget);
 #if GTK_MAJOR_VERSION >= 4
-    gtk_window_present(GTK_WINDOW(obj->widget));
+        gtk_window_present(GTK_WINDOW(obj->widget));
 #elif GTK_MAJOR_VERSION <= 3
-    gtk_widget_show_all(obj->widget);
+        gtk_widget_show_all(obj->widget);
 #endif
-    
+    }
+      
     if(!visible) {
         obj->ref++;
     }
 }
 
 void ui_close(UiObject *obj) {
-    uic_context_prepare_close(obj->ctx);
+    uic_context_prepare_close(obj->ctx); // TODO: should this be moved to the close event handler?
+    if(obj->widget) {
 #if GTK_CHECK_VERSION(4, 0, 0)
-    gtk_window_close(GTK_WINDOW(obj->widget));
+        gtk_window_close(GTK_WINDOW(obj->widget));
 #else
-    gtk_widget_destroy(obj->widget);
+        gtk_widget_destroy(obj->widget);
 #endif
+    } else {
+        ui_window_close_request(obj);
+    }
 }
 
 

mercurial