# HG changeset patch # User nadvornik # Date 1235908772 0 # Node ID d9197358ec5ac6f0dda1808863518cd694c5b2fb # Parent 93fe7a68a68953049160b5b0fcae020082be3f1c do not use separate list of entries, rely on vbox diff -r 93fe7a68a689 -r d9197358ec5a src/bar_exif.c --- a/src/bar_exif.c Sun Mar 01 00:10:00 2009 +0000 +++ b/src/bar_exif.c Sun Mar 01 11:59:32 2009 +0000 @@ -26,12 +26,6 @@ #include -ExifUI ExifUIList[]={ - { 0, 0, EXIF_UI_OFF, NULL} -}; - - - /* *------------------------------------------------------------------- * EXIF widget @@ -61,10 +55,9 @@ GtkSizeGroup *size_group; FileData *fd; - GList *entries; }; -static void bar_pane_exif_update_entry(PaneExifData *ped, ExifEntry *ee, gboolean update_title); +static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title); static void bar_pane_exif_entry_destroy(GtkWidget *widget, gpointer data) { @@ -94,6 +87,7 @@ ee->if_set = if_set; ee->hbox = gtk_hbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(ee->hbox), "entry_data", ee); g_signal_connect_after(G_OBJECT(ee->hbox), "destroy", G_CALLBACK(bar_pane_exif_entry_destroy), ee); @@ -112,8 +106,7 @@ gtk_widget_show(ee->value_label); gtk_box_pack_start(GTK_BOX(ped->vbox), ee->hbox, TRUE, TRUE, 0); - ped->entries = g_list_append(ped->entries, ee); - bar_pane_exif_update_entry(ped, ee, TRUE); + bar_pane_exif_update_entry(ped, ee->hbox, TRUE); } static void bar_pane_exif_entry_update_title(ExifEntry *ee) @@ -125,9 +118,12 @@ g_free(markup); } -static void bar_pane_exif_update_entry(PaneExifData *ped, ExifEntry *ee, gboolean update_title) +static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title) { - gchar *text = metadata_read_string(ped->fd, ee->key, METADATA_FORMATTED); + gchar *text; + ExifEntry *ee = g_object_get_data(G_OBJECT(entry), "entry_data"); + if (!ee) return; + text = metadata_read_string(ped->fd, ee->key, METADATA_FORMATTED); if (ee->if_set && (!text || !*text)) { @@ -150,7 +146,7 @@ static void bar_pane_exif_update(PaneExifData *ped) { - GList *work; + GList *list, *work; #if 0 ExifData *exif; @@ -172,15 +168,16 @@ bar_pane_exif_sensitive(ped, TRUE); #endif - - work = ped->entries; + list = gtk_container_get_children(GTK_CONTAINER(ped->vbox)); + work = list; while (work) { - ExifEntry *ee = work->data; + GtkWidget *entry = work->data; work = work->next; - bar_pane_exif_update_entry(ped, ee, FALSE); + bar_pane_exif_update_entry(ped, entry, FALSE); } + g_list_free(list); } void bar_pane_exif_set_fd(GtkWidget *widget, FileData *fd) @@ -196,8 +193,11 @@ bar_pane_exif_update(ped); } -static void bar_pane_exif_entry_write_config(ExifEntry *ee, GString *outstr, gint indent) +static void bar_pane_exif_entry_write_config(GtkWidget *entry, GString *outstr, gint indent) { + ExifEntry *ee = g_object_get_data(G_OBJECT(entry), "entry_data"); + if (!ee) return; + WRITE_STRING("\n"); indent++; - work = ped->entries; + + list = gtk_container_get_children(GTK_CONTAINER(ped->vbox)); + work = list; while (work) { - ExifEntry *ee = work->data; + GtkWidget *entry = work->data; work = work->next; - bar_pane_exif_entry_write_config(ee, outstr, indent); + bar_pane_exif_entry_write_config(entry, outstr, indent); } + g_list_free(list); indent--; WRITE_STRING("\n"); } @@ -249,7 +252,6 @@ { PaneExifData *ped = data; - g_list_free(ped->entries); g_object_unref(ped->size_group); file_data_unref(ped->fd); g_free(ped);