summaryrefslogtreecommitdiffstats
path: root/info.c
diff options
context:
space:
mode:
authorGravatar Mikko Rasa <tdb@tdb.fi>2012-08-22 00:35:08 +0300
committerGravatar Mikko Rasa <tdb@tdb.fi>2012-08-22 00:43:59 +0300
commitdf1f506b4e874a9c5afad8d31989a2389bbcdf2d (patch)
tree2108bfeaeaa3bb7ca5fbe8ddebdba231bde03cac /info.c
parentc6be2404dafcb5032f8e35d31bca570f0ae80ef6 (diff)
downloadsubsurface-df1f506b4e874a9c5afad8d31989a2389bbcdf2d.tar.gz
Check if multi-dive editing is actually needed
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>
Diffstat (limited to 'info.c')
-rw-r--r--info.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/info.c b/info.c
index 468f35772..66e4f0adc 100644
--- 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);