Author: olivier
Date: 2006-07-08 12:36:25 +0000 (Sat, 08 Jul 2006)
New Revision: 22293

Modified:
   xfwm4/trunk/mcs-plugin/wmtweaks_plugin.c
   xfwm4/trunk/mcs-plugin/xfwm4_plugin.c
Log:
Use GtkComboBox instead of deprecated GtkOptionMenu (patch from Darren Salt 
<[EMAIL PROTECTED]>, bug #1999).

Modified: xfwm4/trunk/mcs-plugin/wmtweaks_plugin.c
===================================================================
--- xfwm4/trunk/mcs-plugin/wmtweaks_plugin.c    2006-07-08 12:32:54 UTC (rev 
22292)
+++ xfwm4/trunk/mcs-plugin/wmtweaks_plugin.c    2006-07-08 12:36:25 UTC (rev 
22293)
@@ -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",

Modified: xfwm4/trunk/mcs-plugin/xfwm4_plugin.c
===================================================================
--- xfwm4/trunk/mcs-plugin/xfwm4_plugin.c       2006-07-08 12:32:54 UTC (rev 
22292)
+++ xfwm4/trunk/mcs-plugin/xfwm4_plugin.c       2006-07-08 12:36:25 UTC (rev 
22293)
@@ -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);

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to