ui/gtk/toolkit.c

changeset 1046
94df16a7fff2
parent 1042
f3e2811ecf3a
equal deleted inserted replaced
1045:e855396fd839 1046:94df16a7fff2
31 #include <string.h> 31 #include <string.h>
32 #include <stdbool.h> 32 #include <stdbool.h>
33 33
34 #include "toolkit.h" 34 #include "toolkit.h"
35 #include "toolbar.h" 35 #include "toolbar.h"
36 #include "window.h"
36 #include "icon.h" 37 #include "icon.h"
37 #include "../common/document.h" 38 #include "../common/document.h"
38 #include "../common/properties.h" 39 #include "../common/properties.h"
39 #include "../common/menu.h" 40 #include "../common/menu.h"
40 #include "../common/toolbar.h" 41 #include "../common/toolbar.h"
143 return GTK_APPLICATION(app); 144 return GTK_APPLICATION(app);
144 } 145 }
145 #endif 146 #endif
146 147
147 void ui_show(UiObject *obj) { 148 void ui_show(UiObject *obj) {
148 gboolean visible = gtk_widget_is_visible(obj->widget); 149 gboolean visible = FALSE;
149
150 uic_check_state_widgets(obj->ctx); 150 uic_check_state_widgets(obj->ctx);
151 #if GTK_MAJOR_VERSION >= 4 151 if(obj->widget) {
152 gtk_window_present(GTK_WINDOW(obj->widget)); 152 visible = gtk_widget_is_visible(obj->widget);
153 #if GTK_MAJOR_VERSION >= 4
154 gtk_window_present(GTK_WINDOW(obj->widget));
153 #elif GTK_MAJOR_VERSION <= 3 155 #elif GTK_MAJOR_VERSION <= 3
154 gtk_widget_show_all(obj->widget); 156 gtk_widget_show_all(obj->widget);
155 #endif 157 #endif
156 158 }
159
157 if(!visible) { 160 if(!visible) {
158 obj->ref++; 161 obj->ref++;
159 } 162 }
160 } 163 }
161 164
162 void ui_close(UiObject *obj) { 165 void ui_close(UiObject *obj) {
163 uic_context_prepare_close(obj->ctx); 166 uic_context_prepare_close(obj->ctx); // TODO: should this be moved to the close event handler?
167 if(obj->widget) {
164 #if GTK_CHECK_VERSION(4, 0, 0) 168 #if GTK_CHECK_VERSION(4, 0, 0)
165 gtk_window_close(GTK_WINDOW(obj->widget)); 169 gtk_window_close(GTK_WINDOW(obj->widget));
166 #else 170 #else
167 gtk_widget_destroy(obj->widget); 171 gtk_widget_destroy(obj->widget);
168 #endif 172 #endif
173 } else {
174 ui_window_close_request(obj);
175 }
169 } 176 }
170 177
171 178
172 static gboolean ui_job_finished(void *data) { 179 static gboolean ui_job_finished(void *data) {
173 UiJob *job = data; 180 UiJob *job = data;

mercurial