Convert the plugins from GtkOptionMenu to GtkComboBox. Signed-off-by: Darren Salt Index: mcs-plugin/wmtweaks_plugin.c =================================================================== --- mcs-plugin/wmtweaks_plugin.c (revision 22271) +++ mcs-plugin/wmtweaks_plugin.c (working copy) @@ -169,17 +169,21 @@ static void cb_menuitem_changed (GtkWidget * widget, gpointer user_data) { - gchar **value = (gchar **) user_data; - gchar *setting_name = NULL; - McsPlugin *mcs_plugin = NULL; + const gchar **value = user_data; + gchar *setting_name; + McsPlugin *mcs_plugin; + const gchar *const *values; - *value = (gchar *) g_object_get_data (G_OBJECT (widget), "setting-value"); + values = g_object_get_data (G_OBJECT (widget), "setting-values"); setting_name = (gchar *) g_object_get_data (G_OBJECT (widget), "setting-name"); mcs_plugin = (McsPlugin *) g_object_get_data (G_OBJECT (widget), "mcs-plugin"); g_assert (setting_name); g_assert (mcs_plugin); + g_assert (values); + *value = values[gtk_combo_box_get_active (GTK_COMBO_BOX (widget))]; + mcs_manager_set_string (mcs_plugin->manager, setting_name, CHANNEL, *value); mcs_manager_notify (mcs_plugin->manager, CHANNEL); write_options (mcs_plugin); @@ -261,12 +265,11 @@ } static GtkWidget * -create_option_menu (McsPlugin * mcs_plugin, gchar * values[], const gchar * label, gchar * setting_name, - gchar ** value) +create_option_menu (McsPlugin * mcs_plugin, const gchar *const values[], + const gchar * label, gchar * setting_name, gchar ** value) { GtkWidget *hbox; GtkWidget *label_widget; - GtkWidget *menu; GtkWidget *omenu; GtkWidget *item; guint n; @@ -281,29 +284,24 @@ gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5); gtk_widget_show (label_widget); - omenu = gtk_option_menu_new (); + omenu = gtk_combo_box_new_text (); gtk_box_pack_start (GTK_BOX (hbox), omenu, FALSE, TRUE, 2); gtk_widget_show (omenu); - menu = gtk_menu_new (); - gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); - gtk_widget_show (menu); - for (n = 0; n < 12; n++) { - item = gtk_menu_item_new_with_mnemonic (values[n]); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); + gtk_combo_box_append_text (GTK_COMBO_BOX (omenu), + (n == 11) ? gettext (values[n]) : values[n]); if (!g_ascii_strcasecmp (*value, values[n])) - gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), n); - - g_object_set_data (G_OBJECT (item), "setting-name", setting_name); - g_object_set_data (G_OBJECT (item), "mcs-plugin", mcs_plugin); - g_object_set_data (G_OBJECT (item), "setting-value", values[n]); - g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (cb_menuitem_changed), value); + gtk_combo_box_set_active (GTK_COMBO_BOX (omenu), n); } + g_object_set_data (G_OBJECT (omenu), "mcs-plugin", mcs_plugin); + g_object_set_data (G_OBJECT (omenu), "setting-name", setting_name); + g_object_set_data (G_OBJECT (omenu), "setting-values", (gpointer) values); + g_signal_connect (G_OBJECT (omenu), "changed", G_CALLBACK (cb_menuitem_changed), value); + return (hbox); } @@ -356,7 +354,7 @@ GtkWidget *button; guint nth = 0; - gchar *modifier_list[] = { + static const gchar *const modifier_list[] = { "Alt", "Control", "Hyper", Index: mcs-plugin/xfwm4_plugin.c =================================================================== --- mcs-plugin/xfwm4_plugin.c (revision 22271) +++ mcs-plugin/xfwm4_plugin.c (working copy) @@ -660,28 +660,20 @@ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); - omenu = gtk_option_menu_new (); + omenu = gtk_combo_box_new_text (); gtk_box_pack_start (GTK_BOX (hbox), omenu, TRUE, TRUE, 0); gtk_widget_show (omenu); - menu = gtk_menu_new (); - gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); - gtk_widget_show (menu); - for (n = 0; n < size; n++) { - item = gtk_menu_item_new_with_mnemonic (_(template[n].label)); - gtk_widget_show (item); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_combo_box_append_text (GTK_COMBO_BOX (omenu), _(template[n].label)); if (strcmp (value, template[n].action) == 0) - gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), n); - - g_object_set_data (G_OBJECT (item), "user-data", template[n].action); - - g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (handler), user_data); + gtk_combo_box_set_active (GTK_COMBO_BOX (omenu), n); } + g_signal_connect (G_OBJECT (omenu), "changed", G_CALLBACK (handler), user_data); + return (vbox); } @@ -1308,14 +1300,12 @@ cb_dblclick_action_value_changed (GtkWidget * widget, gpointer user_data) { McsPlugin *mcs_plugin = (McsPlugin *) user_data; - const gchar *action; + gint active; - action = (const gchar *) g_object_get_data (G_OBJECT (widget), "user-data"); + g_free (dbl_click_action); + active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); + dbl_click_action = g_strdup (dbl_click_values[active].action); - if (dbl_click_action) - g_free (dbl_click_action); - - dbl_click_action = g_strdup (action); mcs_manager_set_string (mcs_plugin->manager, "Xfwm/DblClickAction", CHANNEL1, dbl_click_action); mcs_manager_notify (mcs_plugin->manager, CHANNEL1); xfwm4_plugin_write_options (mcs_plugin); @@ -1325,14 +1315,12 @@ cb_title_align_value_changed (GtkWidget * widget, gpointer user_data) { McsPlugin *mcs_plugin = (McsPlugin *) user_data; - const gchar *action; + gint active; - action = (const gchar *) g_object_get_data (G_OBJECT (widget), "user-data"); + g_free (title_align); + active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); + title_align = g_strdup (title_align_values[active].action); - if (title_align) - g_free (title_align); - - title_align = g_strdup (action); mcs_manager_set_string (mcs_plugin->manager, "Xfwm/TitleAlign", CHANNEL1, title_align); mcs_manager_notify (mcs_plugin->manager, CHANNEL1); xfwm4_plugin_write_options (mcs_plugin);