static void vd_destroy_cb(GtkWidget *widget, gpointer data) { ViewDir *vd = data; file_data_unregister_notify_func(vd_notify_cb, vd); if (vd->popup) { g_signal_handlers_disconnect_matched(G_OBJECT(vd->popup), G_SIGNAL_MATCH_DATA, 0, 0, 0, NULL, vd); gtk_widget_destroy(vd->popup); } switch (vd->type) { case DIRVIEW_LIST: vdlist_destroy_cb(widget, data); break; case DIRVIEW_TREE: vdtree_destroy_cb(widget, data); break; } if (vd->pf) folder_icons_free(vd->pf); if (vd->drop_list) filelist_free(vd->drop_list); if (vd->dir_fd) file_data_unref(vd->dir_fd); if (vd->info) g_free(vd->info); g_free(vd); }
static void bar_pane_keywords_connect_mark_cb(GtkWidget *menu_widget, gpointer data) { PaneKeywordsData *pkd = data; GtkTreeModel *model; GtkTreeIter iter; GtkTreeModel *keyword_tree; GtkTreeIter kw_iter; gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu_widget), "mark")) - 1; model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview)); keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model)); if (!pkd->click_tpath) return; if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return; gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter); file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd); meta_data_connect_mark_with_keyword(keyword_tree, &kw_iter, mark); file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW); // bar_pane_keywords_update(pkd); }
static void bar_pane_exif_destroy(GtkWidget *widget, gpointer data) { PaneExifData *ped = data; file_data_unregister_notify_func(bar_pane_exif_notify_cb, ped); g_object_unref(ped->size_group); file_data_unref(ped->fd); g_free(ped->pane.id); g_free(ped); }
static gboolean bar_pane_keywords_changed_idle_cb(gpointer data) { PaneKeywordsData *pkd = data; file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd); bar_pane_keywords_write(pkd); bar_keyword_tree_sync(pkd); file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW); pkd->idle_id = 0; return FALSE; }
static void bar_pane_gps_destroy(GtkWidget *widget, gpointer data) { PaneGPSData *pgd = data; file_data_unregister_notify_func(bar_pane_gps_notify_cb, pgd); file_data_unref(pgd->fd); g_free(pgd->map_source); g_free(pgd->pane.id); clutter_actor_destroy(pgd->gps_view); g_free(pgd); }
static void bar_pane_keywords_destroy(GtkWidget *widget, gpointer data) { PaneKeywordsData *pkd = data; if (pkd->click_tpath) gtk_tree_path_free(pkd->click_tpath); if (pkd->idle_id) g_source_remove(pkd->idle_id); file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd); file_data_unref(pkd->fd); g_free(pkd->key); g_free(pkd); }
static void bar_pane_comment_destroy(GtkWidget *widget, gpointer data) { PaneCommentData *pcd = data; file_data_unregister_notify_func(bar_pane_comment_notify_cb, pcd); file_data_unref(pcd->fd); g_free(pcd->key); g_free(pcd->pane.id); g_free(pcd); }
static void view_window_destroy_cb(GtkWidget *widget, gpointer data) { ViewWindow *vw = data; view_window_list = g_list_remove(view_window_list, vw); view_slideshow_stop(vw); fullscreen_stop(vw->fs); filelist_free(vw->list); file_data_unregister_notify_func(view_window_notify_cb, vw); g_free(vw); }
gboolean vd_set_fd(ViewDir *vd, FileData *dir_fd) { gboolean ret = FALSE; file_data_unregister_notify_func(vd_notify_cb, vd); switch (vd->type) { case DIRVIEW_LIST: ret = vdlist_set_fd(vd, dir_fd); break; case DIRVIEW_TREE: ret = vdtree_set_fd(vd, dir_fd); break; } file_data_register_notify_func(vd_notify_cb, vd, NOTIFY_PRIORITY_HIGH); return ret; }
void collection_free(CollectionData *cd) { if (!cd) return; DEBUG_1("collection \"%s\" freed", cd->name); collection_load_stop(cd); collection_list_free(cd->list); file_data_unregister_notify_func(collection_notify_cb, cd); collection_list = g_list_remove(collection_list, cd); g_hash_table_destroy(cd->existence); g_free(cd->path); g_free(cd->name); g_free(cd); }