static struct prop * gu_stop(void *ui) { gtk_ui_t *gu = ui; gu_window_t *gw; prop_t *nav = NULL; gu_popup_fini(gu); // Try to find the last/currently focused navigator and return that gw = gu->gu_last_focused ?: LIST_FIRST(&gu->gu_windows); if(gw != NULL) { nav = gw->gw_current_tab->gt_nav; gw->gw_current_tab->gt_nav = NULL; // Don't destroy it below } // Destroy all windows (and tabs) while((gw = LIST_FIRST(&gu->gu_windows)) != NULL) gu_win_destroy(gw); return nav; }
static gboolean gw_close(GtkWidget *widget,GdkEvent *event, gpointer data) { gu_window_t *gw = data; gtk_ui_t *gu = gw->gw_gu; gu_win_destroy(gw); if(LIST_FIRST(&gu->gu_windows) == NULL) app_shutdown(0); return TRUE; }
void gu_tab_close(gu_tab_t *gt) { gu_window_t *gw = gt->gt_gw; gu_tab_destroy(gt); if(gw->gw_ntabs == 0) { gu_win_destroy(gw); } else if(gw->gw_ntabs < 2) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gw->gw_notebook), 0); } }
void gu_tab_destroy(gu_tab_t *gt) { gu_window_t *gw = gt->gt_gw; gtk_widget_destroy(gt->gt_notebook); prop_destroy(gt->gt_nav); LIST_REMOVE(gt, gt_link); free(gt); gw->gw_ntabs--; if(gw->gw_ntabs == 0) { gu_win_destroy(gw); } else if(gw->gw_ntabs < 2) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gw->gw_notebook), 0); } }
static gboolean gw_close(GtkWidget *widget,GdkEvent *event, gpointer data) { gu_win_destroy(data); return TRUE; }
static void m_closewindow(GtkWidget *menu_item, gpointer callback_data) { gu_window_t *gw = callback_data; gu_win_destroy(gw); }