Use gtk_radio_menu_item for enum preferences menu.

This fixes bug 3206.

svn path=/trunk/; revision=27519
This commit is contained in:
Stig Bjørlykke 2009-02-23 14:24:44 +00:00
parent 3bf06a7c7a
commit 137933aa5b
1 changed files with 9 additions and 4 deletions

View File

@ -2748,6 +2748,9 @@ menu_prefs_change_enum (GtkWidget *w, gpointer data)
module_t *module = g_object_get_data (G_OBJECT(w), "module");
gint new_value = GPOINTER_TO_INT(g_object_get_data (G_OBJECT(w), "enumval"));
if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM(w)))
return;
if (*value != new_value) {
module->prefs_changed = TRUE;
*value = new_value;
@ -2765,6 +2768,7 @@ add_protocol_prefs_menu (pref_t *pref, gpointer data)
{
GtkWidget *menu_preferences;
GtkWidget *menu_item, *menu_sub_item, *sub_menu;
GSList *group = NULL;
module_t *module = data;
const enum_val_t *enum_valp;
gchar *label;
@ -2789,12 +2793,13 @@ add_protocol_prefs_menu (pref_t *pref, gpointer data)
gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_item), sub_menu);
enum_valp = pref->info.enum_info.enumvals;
while (enum_valp->name != NULL) {
menu_sub_item = gtk_check_menu_item_new_with_label(enum_valp->description);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_sub_item), enum_valp->value == *pref->varp.enump);
gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM(menu_sub_item), TRUE);
menu_sub_item = gtk_radio_menu_item_new_with_label(group, enum_valp->description);
group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_sub_item));
if (enum_valp->value == *pref->varp.enump) {
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_sub_item), TRUE);
}
g_object_set_data (G_OBJECT(menu_sub_item), "module", module);
g_object_set_data (G_OBJECT(menu_sub_item), "enumval", GINT_TO_POINTER(enum_valp->value));
g_object_set (G_OBJECT(menu_sub_item), "draw-as-radio", TRUE, NULL);
g_signal_connect(menu_sub_item, "activate", G_CALLBACK(menu_prefs_change_enum), pref->varp.enump);
gtk_menu_append (sub_menu, menu_sub_item);
gtk_widget_show (menu_sub_item);