Author: dannym
Date: 2009-01-11 22:24:56 +0000 (Sun, 11 Jan 2009)
New Revision: 29183

Modified:
   xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-prefbox.gob
   xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox-private.h
   xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox.c
Log:
fix bug# 3600: Wannabe Master dosn't work properly for multiple instances, bug# 
4541: 10 wakeups (speedstep) per seconds.

Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-prefbox.gob
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-prefbox.gob        
2009-01-11 21:44:30 UTC (rev 29182)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-prefbox.gob        
2009-01-11 22:24:56 UTC (rev 29183)
@@ -163,6 +163,18 @@
 
        }
 
+       protected gboolean focus_out_event_cb(self, GdkEventFocus* event, 
GtkWidget* widget)
+       {
+               /* handle the device change immediately so the Wannabe Master 
option box will have the new device's entries for sure. */
+               if (self->_priv->device_entry_delayer) { /* something was 
changed. */
+                       delayer_free(self->_priv->device_entry_delayer);
+                       self->_priv->device_entry_delayer = 0;
+                       emit self_device_changed (self);
+               }
+
+               return FALSE;
+       }
+
        init(self)
        {
                GtkWidget *dentry;
@@ -170,9 +182,12 @@
 
                gtk_box_set_spacing (GTK_BOX (self), 5);
                self->device_cb = GTK_COMBO (gtk_combo_new ());
+
+               g_signal_connect_data 
(G_OBJECT(GTK_COMBO(self->device_cb)->entry), "focus-out-event", 
G_CALLBACK(self_focus_out_event_cb), self, NULL, G_CONNECT_SWAPPED | 
G_CONNECT_AFTER);
+               /* = g_signal_connect_after_swapped 
(G_OBJECT(GTK_COMBO(self->device_cb)->entry), "focus-out-event", 
G_CALLBACK(self_focus_out_event_cb), self); */
+
                self->master_om = GTK_OPTION_MENU (gtk_option_menu_new ());
 
-
                gtk_container_set_border_width (GTK_CONTAINER (self), 5);
                gtk_box_pack_start (GTK_BOX (self), twocol_label (_("Device:"), 
GTK_WIDGET (self->device_cb)), FALSE, FALSE, 0);
                gtk_box_pack_start (GTK_BOX (self), twocol_label (_("Wannabe 
Master:"), GTK_WIDGET (self->master_om)), FALSE, FALSE, 0);
@@ -214,8 +229,8 @@
 
        protected gboolean device_changed_delayed_cb (self)
        {
-               /*printf ("delayed\n");*/
                emit self_device_changed (self);
+               self->_priv->device_entry_delayer = 0;
                return FALSE;
        }
 
@@ -273,15 +288,7 @@
 
                gtk_entry_set_text (GTK_ENTRY (self->device_cb->entry), nvl 
(device, ""));
 
-               omi = self_find_master_by_name (self, master_control);
 
-               gtk_option_menu_set_history (self->master_om, omi);
-
-               if (master_control) {
-                       g_free (master_control);
-                       master_control = NULL;
-               }
-
                if (device) {
                        g_free (device);
                        device = NULL;
@@ -293,6 +300,16 @@
                }
 
                emit self_device_changed (self);
+
+               omi = self_find_master_by_name (self, master_control);
+
+               gtk_option_menu_set_history (self->master_om, omi);
+
+               if (master_control) {
+                       g_free (master_control);
+                       master_control = NULL;
+               }
+
        }
 
        public void save_preferences (self, XfceMixerPreferences *p)

Modified: 
xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox-private.h
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox-private.h     
2009-01-11 21:44:30 UTC (rev 29182)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox-private.h     
2009-01-11 22:24:56 UTC (rev 29183)
@@ -34,6 +34,7 @@
 void   xfce_mixer_prefbox_fill_master_list     (XfceMixerPrefbox * self);
 gchar *        xfce_mixer_prefbox_find_name_by_master_i        
(XfceMixerPrefbox * self, gint master_i);
 gint   xfce_mixer_prefbox_find_master_by_name  (XfceMixerPrefbox * self, gchar 
const * name);
+gboolean       xfce_mixer_prefbox_focus_out_event_cb   (XfceMixerPrefbox * 
self, GdkEventFocus * event, GtkWidget * widget);
 void   xfce_mixer_prefbox_add_command_box      (XfceMixerPrefbox * self);
 gboolean       xfce_mixer_prefbox_device_changed_delayed_cb    
(XfceMixerPrefbox * self);
 void   xfce_mixer_prefbox_device_changed_cb    (XfceMixerPrefbox * self, 
GtkEditable * e);

Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox.c
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox.c     
2009-01-11 21:44:30 UTC (rev 29182)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-prefbox.c     
2009-01-11 22:24:56 UTC (rev 29183)
@@ -102,6 +102,7 @@
 #define self_find_name_by_master_i xfce_mixer_prefbox_find_name_by_master_i
 #define self_find_master_by_name xfce_mixer_prefbox_find_master_by_name
 #define self_device_changed xfce_mixer_prefbox_device_changed
+#define self_focus_out_event_cb xfce_mixer_prefbox_focus_out_event_cb
 #define self_add_command_box xfce_mixer_prefbox_add_command_box
 #define self_device_changed_delayed_cb 
xfce_mixer_prefbox_device_changed_delayed_cb
 #define self_device_changed_cb xfce_mixer_prefbox_device_changed_cb
@@ -167,7 +168,7 @@
                        stringlist_free(VAR);
                        VAR = NULL;
                }
-#line 171 "xfce-mixer-prefbox.c"
+#line 172 "xfce-mixer-prefbox.c"
        memset(&master_lst, 0, sizeof(master_lst));
 #undef VAR
 #undef master_lst
@@ -176,7 +177,7 @@
        {
 #line 47 "mixer-prefbox.gob"
         delayer_free (VAR); }
-#line 180 "xfce-mixer-prefbox.c"
+#line 181 "xfce-mixer-prefbox.c"
        memset(&device_entry_delayer, 0, sizeof(device_entry_delayer));
 #undef VAR
 #undef device_entry_delayer
@@ -204,40 +205,43 @@
 
 #line 135 "mixer-prefbox.gob"
        c->device_changed = ___real_xfce_mixer_prefbox_device_changed;
-#line 208 "xfce-mixer-prefbox.c"
+#line 209 "xfce-mixer-prefbox.c"
        g_object_class->finalize = ___finalize;
 }
 #undef __GOB_FUNCTION__
-#line 166 "mixer-prefbox.gob"
+#line 178 "mixer-prefbox.gob"
 static void 
 xfce_mixer_prefbox_init (XfceMixerPrefbox * self G_GNUC_UNUSED)
-#line 215 "xfce-mixer-prefbox.c"
+#line 216 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::init"
        self->_priv = 
G_TYPE_INSTANCE_GET_PRIVATE(self,XFCE_TYPE_MIXER_PREFBOX,XfceMixerPrefboxPrivate);
 #line 23 "mixer-prefbox.gob"
        self->master_lst = NULL;
-#line 221 "xfce-mixer-prefbox.c"
+#line 222 "xfce-mixer-prefbox.c"
 #line 37 "mixer-prefbox.gob"
        self->_priv->device_entry_delayer = 0;
-#line 224 "xfce-mixer-prefbox.c"
+#line 225 "xfce-mixer-prefbox.c"
 #line 47 "mixer-prefbox.gob"
        self->launcher_entry = NULL;
-#line 227 "xfce-mixer-prefbox.c"
+#line 228 "xfce-mixer-prefbox.c"
 #line 47 "mixer-prefbox.gob"
        self->click_b = NULL;
-#line 230 "xfce-mixer-prefbox.c"
+#line 231 "xfce-mixer-prefbox.c"
  {
-#line 167 "mixer-prefbox.gob"
+#line 179 "mixer-prefbox.gob"
 
                GtkWidget *dentry;
                GtkWidget *item;
 
                gtk_box_set_spacing (GTK_BOX (self), 5);
                self->device_cb = GTK_COMBO (gtk_combo_new ());
+
+               g_signal_connect_data 
(G_OBJECT(GTK_COMBO(self->device_cb)->entry), "focus-out-event", 
G_CALLBACK(self_focus_out_event_cb), self, NULL, G_CONNECT_SWAPPED | 
G_CONNECT_AFTER);
+               /* = g_signal_connect_after_swapped 
(G_OBJECT(GTK_COMBO(self->device_cb)->entry), "focus-out-event", 
G_CALLBACK(self_focus_out_event_cb), self); */
+
                self->master_om = GTK_OPTION_MENU (gtk_option_menu_new ());
 
-
                gtk_container_set_border_width (GTK_CONTAINER (self), 5);
                gtk_box_pack_start (GTK_BOX (self), twocol_label (_("Device:"), 
GTK_WIDGET (self->device_cb)), FALSE, FALSE, 0);
                gtk_box_pack_start (GTK_BOX (self), twocol_label (_("Wannabe 
Master:"), GTK_WIDGET (self->master_om)), FALSE, FALSE, 0);
@@ -265,7 +269,7 @@
                        gtk_container_add (GTK_CONTAINER (GTK_COMBO 
(self->execu_cb)->list), item);
                }
        
-#line 269 "xfce-mixer-prefbox.c"
+#line 273 "xfce-mixer-prefbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -274,14 +278,14 @@
 #line 51 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_fill_defaults (XfceMixerPrefbox * self)
-#line 278 "xfce-mixer-prefbox.c"
+#line 282 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::fill_defaults"
 #line 51 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
 #line 51 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 285 "xfce-mixer-prefbox.c"
+#line 289 "xfce-mixer-prefbox.c"
 {
 #line 52 "mixer-prefbox.gob"
        
@@ -289,20 +293,20 @@
                gtk_entry_set_text (GTK_ENTRY (self->device_cb->entry), "");
                emit self_device_changed (self);
        }}
-#line 293 "xfce-mixer-prefbox.c"
+#line 297 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
 #line 58 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_fill_device_list (XfceMixerPrefbox * self)
-#line 299 "xfce-mixer-prefbox.c"
+#line 303 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::fill_device_list"
 #line 58 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
 #line 58 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 306 "xfce-mixer-prefbox.c"
+#line 310 "xfce-mixer-prefbox.c"
 {
 #line 59 "mixer-prefbox.gob"
        
@@ -317,20 +321,20 @@
                        /* gtk_combo_set_popdown_strings (, NUL); issues 
warning */
                }
        }}
-#line 321 "xfce-mixer-prefbox.c"
+#line 325 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
 #line 72 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_fill_master_list (XfceMixerPrefbox * self)
-#line 327 "xfce-mixer-prefbox.c"
+#line 331 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::fill_master_list"
 #line 72 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
 #line 72 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 334 "xfce-mixer-prefbox.c"
+#line 338 "xfce-mixer-prefbox.c"
 {
 #line 73 "mixer-prefbox.gob"
        
@@ -340,20 +344,20 @@
 
                fill_string_option_menu (self->master_om, self->master_lst);
        }}
-#line 344 "xfce-mixer-prefbox.c"
+#line 348 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
 #line 81 "mixer-prefbox.gob"
 gchar * 
 xfce_mixer_prefbox_find_name_by_master_i (XfceMixerPrefbox * self, gint 
master_i)
-#line 350 "xfce-mixer-prefbox.c"
+#line 354 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::find_name_by_master_i"
 #line 81 "mixer-prefbox.gob"
        g_return_val_if_fail (self != NULL, (gchar * )0);
 #line 81 "mixer-prefbox.gob"
        g_return_val_if_fail (XFCE_IS_MIXER_PREFBOX (self), (gchar * )0);
-#line 357 "xfce-mixer-prefbox.c"
+#line 361 "xfce-mixer-prefbox.c"
 {
 #line 82 "mixer-prefbox.gob"
        
@@ -378,20 +382,20 @@
                }
                return NULL;
        }}
-#line 382 "xfce-mixer-prefbox.c"
+#line 386 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
 #line 105 "mixer-prefbox.gob"
 gint 
 xfce_mixer_prefbox_find_master_by_name (XfceMixerPrefbox * self, gchar const * 
name)
-#line 388 "xfce-mixer-prefbox.c"
+#line 392 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::find_master_by_name"
 #line 105 "mixer-prefbox.gob"
        g_return_val_if_fail (self != NULL, (gint )0);
 #line 105 "mixer-prefbox.gob"
        g_return_val_if_fail (XFCE_IS_MIXER_PREFBOX (self), (gint )0);
-#line 395 "xfce-mixer-prefbox.c"
+#line 399 "xfce-mixer-prefbox.c"
 {
 #line 106 "mixer-prefbox.gob"
        
@@ -421,13 +425,13 @@
 
                return master_i;
        }}
-#line 425 "xfce-mixer-prefbox.c"
+#line 429 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
 #line 135 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_device_changed (XfceMixerPrefbox * self)
-#line 431 "xfce-mixer-prefbox.c"
+#line 435 "xfce-mixer-prefbox.c"
 {
        GValue ___param_values[1];
        GValue ___return_val;
@@ -439,7 +443,7 @@
        g_return_if_fail (self != NULL);
 #line 135 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 443 "xfce-mixer-prefbox.c"
+#line 447 "xfce-mixer-prefbox.c"
 
        ___param_values[0].g_type = 0;
        g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -455,7 +459,7 @@
 #line 135 "mixer-prefbox.gob"
 static void 
 ___real_xfce_mixer_prefbox_device_changed (XfceMixerPrefbox * self 
G_GNUC_UNUSED)
-#line 459 "xfce-mixer-prefbox.c"
+#line 463 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::device_changed"
 {
@@ -488,23 +492,49 @@
                gtk_option_menu_set_history (self->master_om, omi);
 
        }}
-#line 492 "xfce-mixer-prefbox.c"
+#line 496 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
+#line 166 "mixer-prefbox.gob"
+gboolean 
+xfce_mixer_prefbox_focus_out_event_cb (XfceMixerPrefbox * self, GdkEventFocus 
* event, GtkWidget * widget)
+#line 502 "xfce-mixer-prefbox.c"
+{
+#define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::focus_out_event_cb"
+#line 166 "mixer-prefbox.gob"
+       g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 166 "mixer-prefbox.gob"
+       g_return_val_if_fail (XFCE_IS_MIXER_PREFBOX (self), (gboolean )0);
+#line 509 "xfce-mixer-prefbox.c"
+{
+#line 167 "mixer-prefbox.gob"
+       
+               /* handle the device change immediately so the Wannabe Master 
option box will have the new device's entries for sure. */
+               if (self->_priv->device_entry_delayer) { /* something was 
changed. */
+                       delayer_free(self->_priv->device_entry_delayer);
+                       self->_priv->device_entry_delayer = 0;
+                       emit self_device_changed (self);
+               }
 
-#line 204 "mixer-prefbox.gob"
+               return FALSE;
+       }}
+#line 522 "xfce-mixer-prefbox.c"
+#undef __GOB_FUNCTION__
+
+
+#line 219 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_add_command_box (XfceMixerPrefbox * self)
-#line 499 "xfce-mixer-prefbox.c"
+#line 529 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::add_command_box"
-#line 204 "mixer-prefbox.gob"
+#line 219 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
-#line 204 "mixer-prefbox.gob"
+#line 219 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 506 "xfce-mixer-prefbox.c"
+#line 536 "xfce-mixer-prefbox.c"
 {
-#line 205 "mixer-prefbox.gob"
+#line 220 "mixer-prefbox.gob"
        
                self->launcher_entry = launcher_entry_new ();
                self->execu_cb = NULL; /*self->ic->combo;*/
@@ -514,43 +544,43 @@
                gtk_widget_show (GTK_WIDGET (launcher_entry_get_widget 
(self->launcher_entry)));
                gtk_box_pack_start (GTK_BOX (self->click_b), GTK_WIDGET 
(launcher_entry_get_widget (self->launcher_entry)), FALSE, FALSE, 0);
        }}
-#line 518 "xfce-mixer-prefbox.c"
+#line 548 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
-#line 215 "mixer-prefbox.gob"
+#line 230 "mixer-prefbox.gob"
 gboolean 
 xfce_mixer_prefbox_device_changed_delayed_cb (XfceMixerPrefbox * self)
-#line 524 "xfce-mixer-prefbox.c"
+#line 554 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::device_changed_delayed_cb"
-#line 215 "mixer-prefbox.gob"
+#line 230 "mixer-prefbox.gob"
        g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 215 "mixer-prefbox.gob"
+#line 230 "mixer-prefbox.gob"
        g_return_val_if_fail (XFCE_IS_MIXER_PREFBOX (self), (gboolean )0);
-#line 531 "xfce-mixer-prefbox.c"
+#line 561 "xfce-mixer-prefbox.c"
 {
-#line 216 "mixer-prefbox.gob"
+#line 231 "mixer-prefbox.gob"
        
-               /*printf ("delayed\n");*/
                emit self_device_changed (self);
+               self->_priv->device_entry_delayer = 0;
                return FALSE;
        }}
-#line 539 "xfce-mixer-prefbox.c"
+#line 569 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
-#line 222 "mixer-prefbox.gob"
+#line 237 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_device_changed_cb (XfceMixerPrefbox * self, GtkEditable * e)
-#line 545 "xfce-mixer-prefbox.c"
+#line 575 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::device_changed_cb"
-#line 222 "mixer-prefbox.gob"
+#line 237 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
-#line 222 "mixer-prefbox.gob"
+#line 237 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 552 "xfce-mixer-prefbox.c"
+#line 582 "xfce-mixer-prefbox.c"
 {
-#line 223 "mixer-prefbox.gob"
+#line 238 "mixer-prefbox.gob"
        
                delayer_restart (
                        &self->_priv->device_entry_delayer, 
@@ -558,39 +588,39 @@
                        self
                );
        }}
-#line 562 "xfce-mixer-prefbox.c"
+#line 592 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
-#line 231 "mixer-prefbox.gob"
+#line 246 "mixer-prefbox.gob"
 XfceMixerPrefbox * 
 xfce_mixer_prefbox_new (void)
-#line 568 "xfce-mixer-prefbox.c"
+#line 598 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::new"
 {
-#line 232 "mixer-prefbox.gob"
+#line 247 "mixer-prefbox.gob"
        
                XfceMixerPrefbox* w;
                w = (XfceMixerPrefbox*) (GET_NEW);
                xfce_mixer_prefbox_add_command_box (XFCE_MIXER_PREFBOX (w));
                return w;
        }}
-#line 579 "xfce-mixer-prefbox.c"
+#line 609 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
-#line 239 "mixer-prefbox.gob"
+#line 254 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_fill_preferences (XfceMixerPrefbox * self, 
XfceMixerPreferences * p)
-#line 585 "xfce-mixer-prefbox.c"
+#line 615 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::fill_preferences"
-#line 239 "mixer-prefbox.gob"
+#line 254 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
-#line 239 "mixer-prefbox.gob"
+#line 254 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 592 "xfce-mixer-prefbox.c"
+#line 622 "xfce-mixer-prefbox.c"
 {
-#line 240 "mixer-prefbox.gob"
+#line 255 "mixer-prefbox.gob"
        
                gint omi;
                gchar* launcher_command;
@@ -627,15 +657,7 @@
 
                gtk_entry_set_text (GTK_ENTRY (self->device_cb->entry), nvl 
(device, ""));
 
-               omi = self_find_master_by_name (self, master_control);
 
-               gtk_option_menu_set_history (self->master_om, omi);
-
-               if (master_control) {
-                       g_free (master_control);
-                       master_control = NULL;
-               }
-
                if (device) {
                        g_free (device);
                        device = NULL;
@@ -647,23 +669,33 @@
                }
 
                emit self_device_changed (self);
+
+               omi = self_find_master_by_name (self, master_control);
+
+               gtk_option_menu_set_history (self->master_om, omi);
+
+               if (master_control) {
+                       g_free (master_control);
+                       master_control = NULL;
+               }
+
        }}
-#line 652 "xfce-mixer-prefbox.c"
+#line 684 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__
 
-#line 298 "mixer-prefbox.gob"
+#line 315 "mixer-prefbox.gob"
 void 
 xfce_mixer_prefbox_save_preferences (XfceMixerPrefbox * self, 
XfceMixerPreferences * p)
-#line 658 "xfce-mixer-prefbox.c"
+#line 690 "xfce-mixer-prefbox.c"
 {
 #define __GOB_FUNCTION__ "Xfce:Mixer:Prefbox::save_preferences"
-#line 298 "mixer-prefbox.gob"
+#line 315 "mixer-prefbox.gob"
        g_return_if_fail (self != NULL);
-#line 298 "mixer-prefbox.gob"
+#line 315 "mixer-prefbox.gob"
        g_return_if_fail (XFCE_IS_MIXER_PREFBOX (self));
-#line 665 "xfce-mixer-prefbox.c"
+#line 697 "xfce-mixer-prefbox.c"
 {
-#line 299 "mixer-prefbox.gob"
+#line 316 "mixer-prefbox.gob"
        
                gint omi;
                gchar *execu;
@@ -698,5 +730,5 @@
                if (master)
                        g_free (master);
        }}
-#line 702 "xfce-mixer-prefbox.c"
+#line 734 "xfce-mixer-prefbox.c"
 #undef __GOB_FUNCTION__

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to