summaryrefslogtreecommitdiff
path: root/gtk/gtkactiongroup.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-05-19 04:07:42 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-05-19 04:07:42 +0000
commit924d6fdc4e6e920b16ef3caed41903e9a81db2cc (patch)
tree6d57673dbc19153c8940311e05f43d87202676b9 /gtk/gtkactiongroup.c
parent4c1173b7f3dad1275d559f14431db033243602d0 (diff)
downloadgtk+-924d6fdc4e6e920b16ef3caed41903e9a81db2cc.tar.gz
Warn and refuse to add actions with duplicate names. (#150877, Tommi
2007-05-18 Matthias Clasen <mclasen@redhat.com> * gtk/gtkactiongroup.c: Warn and refuse to add actions with duplicate names. (#150877, Tommi Komulainen) svn path=/trunk/; revision=17872
Diffstat (limited to 'gtk/gtkactiongroup.c')
-rw-r--r--gtk/gtkactiongroup.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gtk/gtkactiongroup.c b/gtk/gtkactiongroup.c
index 56b6589614..26243f3197 100644
--- a/gtk/gtkactiongroup.c
+++ b/gtk/gtkactiongroup.c
@@ -535,6 +535,21 @@ gtk_action_group_get_action (GtkActionGroup *action_group,
(action_group, action_name);
}
+static gboolean
+check_unique_action (GtkActionGroup *action_group,
+ const gchar *action_name)
+{
+ if (gtk_action_group_get_action (action_group, action_name) != NULL)
+ {
+ g_warning ("Refusing to add non-unique action '%s' to action group '%s'",
+ action_name,
+ action_group->private_data->name);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/**
* gtk_action_group_add_action:
* @action_group: the action group
@@ -556,6 +571,9 @@ gtk_action_group_add_action (GtkActionGroup *action_group,
g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
g_return_if_fail (GTK_IS_ACTION (action));
g_return_if_fail (gtk_action_get_name (action) != NULL);
+
+ if (!check_unique_action (action_group, gtk_action_get_name (action)))
+ return;
g_hash_table_insert (action_group->private_data->actions,
g_strdup (gtk_action_get_name (action)),
@@ -592,6 +610,9 @@ gtk_action_group_add_action_with_accel (GtkActionGroup *action_group,
GtkStockItem stock_item;
gchar *name;
gchar *stock_id;
+
+ if (!check_unique_action (action_group, gtk_action_get_name (action)))
+ return;
g_object_get (action, "name", &name, "stock-id", &stock_id, NULL);
@@ -773,6 +794,9 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group,
const gchar *label;
const gchar *tooltip;
+ if (!check_unique_action (action_group, entries[i].name))
+ continue;
+
label = gtk_action_group_translate_string (action_group, entries[i].label);
tooltip = gtk_action_group_translate_string (action_group, entries[i].tooltip);
@@ -877,6 +901,9 @@ gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_gro
const gchar *label;
const gchar *tooltip;
+ if (!check_unique_action (action_group, entries[i].name))
+ continue;
+
label = gtk_action_group_translate_string (action_group, entries[i].label);
tooltip = gtk_action_group_translate_string (action_group, entries[i].tooltip);
@@ -989,6 +1016,9 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group
const gchar *label;
const gchar *tooltip;
+ if (!check_unique_action (action_group, entries[i].name))
+ continue;
+
label = gtk_action_group_translate_string (action_group, entries[i].label);
tooltip = gtk_action_group_translate_string (action_group, entries[i].tooltip);