]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Check if multi-dive editing is actually needed
authorMikko Rasa <tdb@tdb.fi>
Tue, 21 Aug 2012 21:35:08 +0000 (00:35 +0300)
committerMikko Rasa <tdb@tdb.fi>
Tue, 21 Aug 2012 21:43:59 +0000 (00:43 +0300)
Context menu callbacks always invoke edit_multi_dive_info(-1) instead of
edit_dive_info.  Since -1 means "all selected", it was impossible to edit
dive notes through the context menus.  This commit makes the function
check if multiple dives are actually selected.

Signed-off-by: Mikko Rasa <tdb@tdb.fi>
info.c

diff --git a/info.c b/info.c
index 468f35772365163be535d1da558b8a299c1336b6..66e4f0adce92047a4de98bf2091604ce18d236d5 100644 (file)
--- a/info.c
+++ b/info.c
@@ -496,6 +496,7 @@ int edit_multi_dive_info(int index)
        GtkWidget *dialog, *vbox;
        struct dive_info info;
        struct dive *master;
+       gboolean multi;
 
        dialog = gtk_dialog_new_with_buttons("Dive Info",
                GTK_WINDOW(main_window),
@@ -508,7 +509,23 @@ int edit_multi_dive_info(int index)
        master = get_dive(index);
        if (!master)
                master = current_dive;
-       dive_info_widget(vbox, master, &info, index < 0);
+
+       /* See if we should use multi dive mode */
+       multi = FALSE;
+       if (index < 0)
+       {
+               int i;
+               struct dive *dive;
+
+               for (i = 0; (dive = get_dive(i)) != NULL; i++) {
+                       if (dive != master && dive->selected) {
+                               multi = TRUE;
+                               break;
+                       }
+               }
+       }
+
+       dive_info_widget(vbox, master, &info, multi);
        show_dive_equipment(master, W_IDX_SECONDARY);
        save_equipment_data(master);
        gtk_widget_show_all(dialog);