ui/gtk/window.c

changeset 1129
a4affe75198c
parent 1125
428ee5baec0e
child 1130
f0def0c24ae6
equal deleted inserted replaced
1128:0a150985d6b6 1129:a4affe75198c
110 ui_set_property("ui.window.height", height_str); 110 ui_set_property("ui.window.height", height_str);
111 } 111 }
112 } 112 }
113 } 113 }
114 114
115 obj->ref--; 115 if(obj->ref > 0) {
116 obj->ref--;
117 } else {
118 // warn about invalid reference counting
119 fprintf(stderr, "Error: UiObject %p ref == 0\n", obj);
120 }
116 if(obj->ref > 0) { 121 if(obj->ref > 0) {
117 #if GTK_CHECK_VERSION(2, 18, 0) 122 #if GTK_CHECK_VERSION(2, 18, 0)
118 gtk_widget_set_visible(obj->widget, FALSE); 123 gtk_widget_set_visible(obj->widget, FALSE);
119 #else 124 #else
120 gtk_widget_hide(obj->widget); 125 gtk_widget_hide(obj->widget);
136 uic_context_prepare_close(obj->ctx); 141 uic_context_prepare_close(obj->ctx);
137 return FALSE; 142 return FALSE;
138 } 143 }
139 } 144 }
140 145
146 static void window_onclose_callback(UiObject *obj) {
147 if(obj->onclose) {
148 UiEvent event;
149 memset(&event, 0, sizeof(UiEvent));
150 event.obj = obj;
151 event.window = obj->window;
152 event.document = obj->ctx->document;
153 obj->onclose(&event, obj->onclosedata);
154 }
155 }
156
141 #if GTK_MAJOR_VERSION >= 4 157 #if GTK_MAJOR_VERSION >= 4
142 static gboolean close_request(GtkWindow* self, UiObject *obj) { 158 static gboolean close_request(GtkWindow* self, UiObject *obj) {
159 window_onclose_callback(obj);
143 return ui_window_close_request(obj); 160 return ui_window_close_request(obj);
144 } 161 }
145 #else 162 #else
146 static gboolean close_request(GtkWidget* self, GdkEvent* event, UiObject *obj) { 163 static gboolean close_request(GtkWidget* self, GdkEvent* event, UiObject *obj) {
164 window_onclose_callback(obj);
147 return ui_window_close_request(obj); 165 return ui_window_close_request(obj);
148 } 166 }
149 #endif 167 #endif
150 168
151 static void save_window_splitview_pos(GtkWidget *widget, void *unused) { 169 static void save_window_splitview_pos(GtkWidget *widget, void *unused) {
303 if(show_title) { 321 if(show_title) {
304 if(!strcmp(show_title, "main") && sidebar) { 322 if(!strcmp(show_title, "main") && sidebar) {
305 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); 323 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE);
306 } else if(!strcmp(show_title, "sidebar")) { 324 } else if(!strcmp(show_title, "sidebar")) {
307 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); 325 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE);
308 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), TRUE); 326 if(headerbar_sidebar) {
327 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), TRUE);
328 }
309 } else if(!strcmp(show_title, "false")) { 329 } else if(!strcmp(show_title, "false")) {
310 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); 330 if(headerbar_sidebar) {
331 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE);
332 }
311 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); 333 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE);
312 } else { 334 } else {
313 fprintf(stderr, "Unknown value '%s' for property ui.gtk.window.showtitle\n", show_title); 335 fprintf(stderr, "Unknown value '%s' for property ui.gtk.window.showtitle\n", show_title);
314 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); 336 if(headerbar_sidebar) {
337 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE);
338 }
315 } 339 }
316 } else { 340 } else {
317 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); 341 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE);
318 if(sidebar) { 342 if(headerbar_sidebar) {
319 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), TRUE); 343 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), TRUE);
320 } 344 }
321 } 345 }
322 346
323 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), headerbar_main); 347 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), headerbar_main);

mercurial