gnome-media r4211 - in trunk/gnome-volume-control: . src
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-media r4211 - in trunk/gnome-volume-control: . src
- Date: Wed, 18 Feb 2009 09:32:00 +0000 (UTC)
Author: hadess
Date: Wed Feb 18 09:31:59 2009
New Revision: 4211
URL: http://svn.gnome.org/viewvc/gnome-media?rev=4211&view=rev
Log:
2009-02-18 Bastien Nocera <hadess hadess net>
* src/gvc-balance-bar.c (_scale_box_new),
(on_scale_button_press_event), (on_scale_button_release_event),
(on_scale_scroll_event): Make the balance bar instant-apply
(Closes: #566423)
Modified:
trunk/gnome-volume-control/ChangeLog
trunk/gnome-volume-control/src/gvc-balance-bar.c
Modified: trunk/gnome-volume-control/src/gvc-balance-bar.c
==============================================================================
--- trunk/gnome-volume-control/src/gvc-balance-bar.c (original)
+++ trunk/gnome-volume-control/src/gvc-balance-bar.c Wed Feb 18 09:31:59 2009
@@ -27,6 +27,7 @@
#include <glib.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+#include <canberra-gtk.h>
#include "gvc-balance-bar.h"
@@ -45,6 +46,7 @@
GtkAdjustment *adjustment;
GtkSizeGroup *size_group;
gboolean symmetric;
+ gboolean click_lock;
};
enum
@@ -57,6 +59,16 @@
static void gvc_balance_bar_init (GvcBalanceBar *balance_bar);
static void gvc_balance_bar_finalize (GObject *object);
+static gboolean on_scale_button_press_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GvcBalanceBar *bar);
+static gboolean on_scale_button_release_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GvcBalanceBar *bar);
+static gboolean on_scale_scroll_event (GtkWidget *widget,
+ GdkEventScroll *event,
+ GvcBalanceBar *bar);
+
G_DEFINE_TYPE (GvcBalanceBar, gvc_balance_bar, GTK_TYPE_HBOX)
static GtkWidget *
@@ -102,7 +114,16 @@
bar->priv->end_box = ebox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0);
- gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_DISCONTINUOUS);
+ gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_CONTINUOUS);
+ ca_gtk_widget_disable_sounds (bar->priv->scale, FALSE);
+ gtk_widget_add_events (bar->priv->scale, GDK_SCROLL_MASK);
+
+ g_signal_connect (G_OBJECT (bar->priv->scale), "button-press-event",
+ G_CALLBACK (on_scale_button_press_event), bar);
+ g_signal_connect (G_OBJECT (bar->priv->scale), "button-release-event",
+ G_CALLBACK (on_scale_button_release_event), bar);
+ g_signal_connect (G_OBJECT (bar->priv->scale), "scroll-event",
+ G_CALLBACK (on_scale_scroll_event), bar);
if (bar->priv->size_group != NULL) {
gtk_size_group_add_widget (bar->priv->size_group, sbox);
@@ -250,6 +271,52 @@
p == PA_CHANNEL_POSITION_TOP_REAR_RIGHT;
}
+static gboolean
+on_scale_button_press_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GvcBalanceBar *bar)
+{
+ bar->priv->click_lock = TRUE;
+
+ return FALSE;
+}
+
+static gboolean
+on_scale_button_release_event (GtkWidget *widget,
+ GdkEventButton *event,
+ GvcBalanceBar *bar)
+{
+ bar->priv->click_lock = FALSE;
+
+ return FALSE;
+}
+
+static gboolean
+on_scale_scroll_event (GtkWidget *widget,
+ GdkEventScroll *event,
+ GvcBalanceBar *bar)
+{
+ gdouble value;
+
+ value = gtk_adjustment_get_value (bar->priv->adjustment);
+
+ if (event->direction == GDK_SCROLL_UP) {
+ if (value + 0.01 > 1.0)
+ value = 1.0;
+ else
+ value = value + 0.01;
+ gtk_adjustment_set_value (bar->priv->adjustment, value);
+ } else if (event->direction == GDK_SCROLL_DOWN) {
+ if (value - 0.01 < 0)
+ value = 0.0;
+ else
+ value = value - 0.01;
+ gtk_adjustment_set_value (bar->priv->adjustment, value);
+ }
+
+ return TRUE;
+}
+
static void
on_adjustment_value_changed (GtkAdjustment *adjustment,
GvcBalanceBar *bar)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]