diff options
author | Matthias Clasen <mclasen@redhat.com> | 2007-05-19 04:07:42 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-05-19 04:07:42 +0000 |
commit | 924d6fdc4e6e920b16ef3caed41903e9a81db2cc (patch) | |
tree | 6d57673dbc19153c8940311e05f43d87202676b9 /gtk/gtkactiongroup.c | |
parent | 4c1173b7f3dad1275d559f14431db033243602d0 (diff) | |
download | gtk+-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.c | 30 |
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); |