Author: jannis
Date: 2008-06-21 00:47:45 +0000 (Sat, 21 Jun 2008)
New Revision: 27094

Modified:
   xfce4-mixer/trunk/ChangeLog
   xfce4-mixer/trunk/TODO
   xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
Log:
        * panel-plugin/xfce-volume-button.c: Add support for toggling
          between minimum and last known volume using the middle
          mouse button.


Modified: xfce4-mixer/trunk/ChangeLog
===================================================================
--- xfce4-mixer/trunk/ChangeLog 2008-06-21 00:17:03 UTC (rev 27093)
+++ xfce4-mixer/trunk/ChangeLog 2008-06-21 00:47:45 UTC (rev 27094)
@@ -1,5 +1,11 @@
 2008-06-21     Jannis Pohlmann <[EMAIL PROTECTED]>
 
+       * panel-plugin/xfce-volume-button.c: Add support for toggling
+         between minimum and last known volume using the middle 
+         mouse button.
+
+2008-06-21     Jannis Pohlmann <[EMAIL PROTECTED]>
+
        * panel-plugin/xfce-volume-button.c: Add support for GDK_Home
          and GDK_End for changing the volume to the maximum/minimum
          level.

Modified: xfce4-mixer/trunk/TODO
===================================================================
--- xfce4-mixer/trunk/TODO      2008-06-21 00:17:03 UTC (rev 27093)
+++ xfce4-mixer/trunk/TODO      2008-06-21 00:47:45 UTC (rev 27094)
@@ -4,8 +4,7 @@
       by updating the corresponding mixer widgets
 
 * Write panel plugin
+   1) Monitor GStreamer for changes
 
-* Implement Xfconf support
-
 * Allow changing controls from the console, probably via something like:
   --change-control=SOUNDCARD NAME:TRACK NAME:NEW VALUE

Modified: xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
===================================================================
--- xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-21 00:17:03 UTC 
(rev 27093)
+++ xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-21 00:47:45 UTC 
(rev 27094)
@@ -58,6 +58,9 @@
 static void xfce_volume_button_key_pressed    (GtkWidget             *widget,
                                                GdkEventKey           *event,
                                                XfceVolumeButton      *button);
+static void xfce_volume_button_button_pressed (GtkWidget             *widget,
+                                               GdkEventButton        *event,
+                                               XfceVolumeButton      *button);
 static void xfce_volume_button_enter          (GtkWidget             *widget,
                                                GdkEventCrossing      *event);
 static void xfce_volume_button_leave          (GtkWidget             *widget,
@@ -89,6 +92,8 @@
   GtkWidget *image;
 
   GtkObject *adjustment;
+
+  gdouble    previous_value;
 };
 
 
@@ -168,6 +173,7 @@
   gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
 
   g_signal_connect (G_OBJECT (button), "key-press-event", G_CALLBACK 
(xfce_volume_button_key_pressed), button);
+  g_signal_connect (G_OBJECT (button), "button-press-event", G_CALLBACK 
(xfce_volume_button_button_pressed), button);
   g_signal_connect (G_OBJECT (button), "enter-notify-event", G_CALLBACK 
(xfce_volume_button_enter), NULL);
   g_signal_connect (G_OBJECT (button), "leave-notify-event", G_CALLBACK 
(xfce_volume_button_leave), NULL);
   g_signal_connect (G_OBJECT (button), "scroll-event", G_CALLBACK 
(xfce_volume_button_scrolled), button);
@@ -245,6 +251,8 @@
         break;
     }
 
+  button->previous_value = value;
+
   xfce_volume_button_update (button);
 
   g_signal_emit_by_name (button, "volume-changed", gtk_adjustment_get_value 
(GTK_ADJUSTMENT (button->adjustment)));
@@ -253,6 +261,39 @@
 
 
 static void 
+xfce_volume_button_button_pressed (GtkWidget        *widget,
+                                   GdkEventButton   *event,
+                                   XfceVolumeButton *button)
+{
+  gdouble value;
+  gdouble min_value;
+
+  g_return_if_fail (IS_XFCE_VOLUME_BUTTON (button));
+
+  g_object_get (G_OBJECT (button->adjustment), "value", &value, "lower", 
&min_value, NULL);
+
+  if (event->button == 2)
+    {
+      if (gtk_adjustment_get_value (GTK_ADJUSTMENT (button->adjustment)) == 
min_value)
+        {
+          gtk_adjustment_set_value (GTK_ADJUSTMENT (button->adjustment), 
button->previous_value);
+          button->previous_value = value;
+        }
+      else
+        {
+          gtk_adjustment_set_value (GTK_ADJUSTMENT (button->adjustment), 
min_value);
+          button->previous_value = value;
+        }
+    }
+
+  xfce_volume_button_update (button);
+
+  g_signal_emit_by_name (button, "volume-changed", gtk_adjustment_get_value 
(GTK_ADJUSTMENT (button->adjustment)));
+}
+
+
+
+static void 
 xfce_volume_button_enter (GtkWidget        *widget,
                           GdkEventCrossing *event)
 {

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

Reply via email to