aboutsummaryrefslogtreecommitdiff
path: root/src/volume-widget.c
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2012-03-10 00:15:23 -0600
committerCharles Kerr <charles.kerr@canonical.com>2012-03-10 00:15:23 -0600
commit03ea74c27df1d586f14cca8e177944bc0f3b7bfa (patch)
treef1aa2516c59175b330dd7a234df43610ac9ab184 /src/volume-widget.c
parent4e9083f7c597a5a6c9bd5e3e4ac2c40000f78351 (diff)
downloadayatana-indicator-sound-03ea74c27df1d586f14cca8e177944bc0f3b7bfa.tar.gz
ayatana-indicator-sound-03ea74c27df1d586f14cca8e177944bc0f3b7bfa.tar.bz2
ayatana-indicator-sound-03ea74c27df1d586f14cca8e177944bc0f3b7bfa.zip
use the new signals from lp:~charlesk/ido/lp-921065 to fix lp bug #921065
Diffstat (limited to 'src/volume-widget.c')
-rw-r--r--src/volume-widget.c56
1 files changed, 28 insertions, 28 deletions
diff --git a/src/volume-widget.c b/src/volume-widget.c
index bd68eb3..c71c1e3 100644
--- a/src/volume-widget.c
+++ b/src/volume-widget.c
@@ -56,7 +56,8 @@ static gboolean volume_widget_change_value_cb (GtkRange *range,
GtkScrollType scroll,
gdouble value,
gpointer user_data);
-static gboolean volume_widget_value_changed_cb(GtkRange *range, gpointer user_data);
+static void volume_widget_primary_clicked(GtkWidget *widget, gpointer user_data);
+static void volume_widget_secondary_clicked(GtkWidget *widget, gpointer user_data);
static void volume_widget_slider_grabbed(GtkWidget *widget, gpointer user_data);
static void volume_widget_slider_released(GtkWidget *widget, gpointer user_data);
static void volume_widget_parent_changed (GtkWidget *widget, gpointer user_data);
@@ -93,7 +94,8 @@ volume_widget_init (VolumeWidget *self)
GtkWidget* volume_widget = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
g_signal_connect(volume_widget, "change-value", G_CALLBACK(volume_widget_change_value_cb), self);
- g_signal_connect(volume_widget, "value-changed", G_CALLBACK(volume_widget_value_changed_cb), self);
+ g_signal_connect(priv->ido_volume_slider, "primary-clicked", G_CALLBACK(volume_widget_primary_clicked), self);
+ g_signal_connect(priv->ido_volume_slider, "secondary-clicked", G_CALLBACK(volume_widget_secondary_clicked), self);
g_signal_connect(priv->ido_volume_slider, "slider-grabbed", G_CALLBACK(volume_widget_slider_grabbed), self);
g_signal_connect(priv->ido_volume_slider, "slider-released", G_CALLBACK(volume_widget_slider_released), self);
@@ -213,32 +215,6 @@ volume_widget_change_value_cb (GtkRange *range,
return FALSE;
}
-/*
- We only want this callback to catch mouse icon press events
- which set the slider to 0 or 100. Ignore all other events.
-*/
-static gboolean
-volume_widget_value_changed_cb (GtkRange *range, gpointer user_data)
-{
-
- g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE);
- VolumeWidget* mitem = VOLUME_WIDGET (user_data);
- VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem);
- GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
- gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
-
- gboolean mute = g_variant_get_boolean (dbusmenu_menuitem_property_get_variant (priv->twin_item,
- DBUSMENU_VOLUME_MENUITEM_MUTE));
- if((current_value == 0 && mute == FALSE) || current_value == 100){
-/*
- g_debug ("value changed - actual set %f", current_value);
-*/
- volume_widget_update (mitem, current_value, "value-changed");
- }
-
- return FALSE;
-}
-
void
volume_widget_update(VolumeWidget* self, gdouble update, gchar* label)
{
@@ -253,6 +229,30 @@ volume_widget_update(VolumeWidget* self, gdouble update, gchar* label)
dbusmenu_menuitem_handle_event (priv->twin_item, source, new_volume, 0);
}
+static void
+volume_widget_update_from_scale (VolumeWidget *self)
+{
+ g_return_if_fail (IS_VOLUME_WIDGET (self));
+
+ VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(self);
+ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
+ const gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
+ g_debug ("%s - setting value to %.0f", G_STRFUNC, current_value);
+ volume_widget_update (self, current_value, "value-changed");
+}
+
+static void
+volume_widget_primary_clicked (GtkWidget *widget G_GNUC_UNUSED, gpointer user_data)
+{
+ volume_widget_update_from_scale (VOLUME_WIDGET(user_data));
+}
+
+static void
+volume_widget_secondary_clicked(GtkWidget *widget, gpointer user_data)
+{
+ volume_widget_update_from_scale (VOLUME_WIDGET(user_data));
+}
+
GtkWidget*
volume_widget_get_ido_slider(VolumeWidget* self)
{