diff options
Diffstat (limited to 'e-util')
-rw-r--r-- | e-util/e-util.c | 35 | ||||
-rw-r--r-- | e-util/e-util.h | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c index 0eaf8c39a4..55eb6eba6b 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -372,6 +372,41 @@ e_action_group_remove_all_actions (GtkActionGroup *action_group) } /** + * e_radio_action_get_current_action: + * @radio_action: a #GtkRadioAction + * + * Returns the currently active member of the group to which @radio_action + * belongs. + * + * Returns: the currently active group member + **/ +GtkRadioAction * +e_radio_action_get_current_action (GtkRadioAction *radio_action) +{ + GSList *group; + gint current_value; + + g_return_val_if_fail (GTK_IS_RADIO_ACTION (radio_action), NULL); + + group = gtk_radio_action_get_group (radio_action); + current_value = gtk_radio_action_get_current_value (radio_action); + + while (group != NULL) { + gint value; + + radio_action = GTK_RADIO_ACTION (group->data); + g_object_get (radio_action, "value", &value, NULL); + + if (value == current_value) + return radio_action; + + group = g_slist_next (group); + } + + return NULL; +} + +/** * e_str_without_underscores: * @s: the string to strip underscores from. * diff --git a/e-util/e-util.h b/e-util/e-util.h index abc76359a6..33bc940df7 100644 --- a/e-util/e-util.h +++ b/e-util/e-util.h @@ -57,6 +57,8 @@ gint e_action_compare_by_label (GtkAction *action1, GtkAction *action2); void e_action_group_remove_all_actions (GtkActionGroup *action_group); +GtkRadioAction *e_radio_action_get_current_action + (GtkRadioAction *radio_action); gchar * e_str_without_underscores (const gchar *s); gint e_str_compare (gconstpointer x, |