Revision: 1477
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1477&view=rev
Author:   nadvornik
Date:     2009-03-05 23:32:56 +0000 (Thu, 05 Mar 2009)

Log Message:
-----------
do not crash if an exif entry is deleted during editing

Modified Paths:
--------------
    trunk/src/bar_exif.c

Modified: trunk/src/bar_exif.c
===================================================================
--- trunk/src/bar_exif.c        2009-03-05 23:02:15 UTC (rev 1476)
+++ trunk/src/bar_exif.c        2009-03-05 23:32:56 UTC (rev 1477)
@@ -73,6 +73,7 @@
        GtkWidget *widget; /* pane or entry, devidet by presenceof "pane_data" 
or "entry_data" */
 
        /* dialog parts */
+       GenericDialog *gd;
        GtkWidget *key_entry;
        GtkWidget *title_entry;
        gboolean if_set;
@@ -354,10 +355,16 @@
                         G_CALLBACK(bar_pane_exif_dnd_receive), NULL);
 }
 
+static void bar_pane_exif_edit_close_cb(GtkWidget *widget, gpointer data)
+{
+       GenericDialog *gd = data;
+       generic_dialog_close(gd);
+}
 
 static void bar_pane_exif_edit_destroy_cb(GtkWidget *widget, gpointer data)
 {
        ConfDialogData *cdd = data;
+       g_signal_handlers_disconnect_by_func(cdd->widget, 
G_CALLBACK(bar_pane_exif_edit_close_cb), cdd->gd);
        g_free(cdd);
 }
 
@@ -365,6 +372,7 @@
 {
 }
 
+
 static void bar_pane_exif_edit_ok_cb(GenericDialog *gd, gpointer data)
 {
        ConfDialogData *cdd = data;
@@ -427,12 +435,16 @@
 
        cdd->if_set = ee ? ee->if_set : TRUE;
 
-       gd = generic_dialog_new(ee ? _("Configure entry") : _("Add entry"), 
"exif_entry_edit",
+       cdd->gd = gd = generic_dialog_new(ee ? _("Configure entry") : _("Add 
entry"), "exif_entry_edit",
                                widget, TRUE,
                                bar_pane_exif_edit_cancel_cb, cdd);
        g_signal_connect(G_OBJECT(gd->dialog), "destroy",
                         G_CALLBACK(bar_pane_exif_edit_destroy_cb), cdd);
 
+       /* in case the entry is deleted during editing */
+       g_signal_connect(G_OBJECT(widget), "destroy",
+                        G_CALLBACK(bar_pane_exif_edit_close_cb), gd);
+
        generic_dialog_add_message(gd, NULL, ee ? _("Configure entry") : _("Add 
entry"), NULL);
 
        generic_dialog_add_button(gd, GTK_STOCK_OK, NULL,


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to