(!old && strcmp("",new));
}
-static char *skip_space(char *str)
+static const char *skip_space(const char *str)
{
if (str) {
while (isspace(*str))
* The "master" string is the string of the current dive - we only consider it
* changed if the old string is either empty, or matches that master string.
*/
-static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp, char *master)
+static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp, const char *master)
{
char *old = *textp;
+ const char *old_text;
const gchar *new;
GtkEntry *entry;
- old = skip_space(old);
+ old_text = skip_space(old);
master = skip_space(master);
/*
* we're editing another dive's info that already had a
* valid value).
*/
- if (master && old)
- if (strcmp(master, old))
+ if (master && old_text)
+ if (strcmp(master, old_text))
return NULL;
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo_box)));
new = gtk_entry_get_text(entry);
while (isspace(*new))
new++;
+ /* If the master string didn't change, don't change other dives either! */
+ if (!text_changed(master,new))
+ return NULL;
if (!text_changed(old,new))
return NULL;
free(old);
delete_dive_info(current_dive);
}
-static void add_menu_item(GtkMenu *menu, const char *label, void (*cb)(GtkMenuItem *, gpointer))
+static void add_menu_item(GtkMenu *menu, const char *label, const char *icon, void (*cb)(GtkMenuItem *, gpointer))
{
- GtkWidget *item = gtk_menu_item_new_with_label(label);
+ GtkWidget *item;
+ if (icon) {
+ GtkWidget *image;
+ item = gtk_image_menu_item_new_with_label(label);
+ image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
+ } else {
+ item = gtk_menu_item_new_with_label(label);
+ }
g_signal_connect(item, "activate", G_CALLBACK(cb), NULL);
gtk_widget_show(item); /* Yes, really */
gtk_menu_prepend(menu, item);
static void populate_popup_cb(GtkTextView *entry, GtkMenu *menu, gpointer user_data)
{
- add_menu_item(menu, "Delete", info_menu_delete_cb);
- add_menu_item(menu, "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)