info.c: Make sure we only edit when there is dive selection

1) info.c: always check for "amount_selected > 0" before calling
edit_multi_dive_info().

2) populate_popup_cb() should only add the "Edit" and "Delete"
items if there are dives are selected

3) in info_menu_delete_cb() we clear the selection, therefore
we need to set "amount_selected" to 0.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2012-10-23 17:42:27 +03:00 committed by Dirk Hohndel
parent 6ea59895ad
commit aec904b612

12
info.c
View file

@ -226,13 +226,15 @@ static int delete_dive_info(struct dive *dive)
static void info_menu_edit_cb(GtkMenuItem *menuitem, gpointer user_data) static void info_menu_edit_cb(GtkMenuItem *menuitem, gpointer user_data)
{ {
edit_multi_dive_info(NULL); if (amount_selected)
edit_multi_dive_info(NULL);
} }
static void info_menu_delete_cb(GtkMenuItem *menuitem, gpointer user_data) static void info_menu_delete_cb(GtkMenuItem *menuitem, gpointer user_data)
{ {
/* this needs to delete all the selected dives as well, I guess? */ /* this needs to delete all the selected dives as well, I guess? */
delete_dive_info(current_dive); delete_dive_info(current_dive);
amount_selected = 0;
} }
static void add_menu_item(GtkMenu *menu, const char *label, const char *icon, void (*cb)(GtkMenuItem *, gpointer)) static void add_menu_item(GtkMenu *menu, const char *label, const char *icon, void (*cb)(GtkMenuItem *, gpointer))
@ -253,8 +255,10 @@ static void add_menu_item(GtkMenu *menu, const char *label, const char *icon, vo
static void populate_popup_cb(GtkTextView *entry, GtkMenu *menu, gpointer user_data) static void populate_popup_cb(GtkTextView *entry, GtkMenu *menu, gpointer user_data)
{ {
add_menu_item(menu, _("Delete"), GTK_STOCK_DELETE, info_menu_delete_cb); if (amount_selected) {
add_menu_item(menu, _("Edit"), GTK_STOCK_EDIT, info_menu_edit_cb); add_menu_item(menu, _("Delete"), GTK_STOCK_DELETE, info_menu_delete_cb);
add_menu_item(menu, _("Edit"), GTK_STOCK_EDIT, info_menu_edit_cb);
}
} }
static GtkEntry *text_value(GtkWidget *box, const char *label) static GtkEntry *text_value(GtkWidget *box, const char *label)
@ -769,7 +773,7 @@ int edit_multi_dive_info(struct dive *single_dive)
int edit_dive_info(struct dive *dive) int edit_dive_info(struct dive *dive)
{ {
if (!dive) if (!dive || !amount_selected)
return 0; return 0;
return edit_multi_dive_info(dive); return edit_multi_dive_info(dive);
} }