Merge lp:~charlesk/indicator-sound/lp-921065 into lp:indicator-sound/fifth

Proposed by Conor Curran
Status: Merged
Approved by: Charles Kerr
Approved revision: 304
Merge reported by: Charles Kerr
Merged at revision: not available
Proposed branch: lp:~charlesk/indicator-sound/lp-921065
Merge into: lp:indicator-sound/fifth
Diff against target: 87 lines (+28/-28)
1 file modified
src/volume-widget.c (+28/-28)
To merge this branch: bzr merge lp:~charlesk/indicator-sound/lp-921065
Reviewer Review Type Date Requested Status
Conor Curran (community) Approve
Review via email: mp+97058@code.launchpad.net

Description of the change

listen to the ido signals

To post a comment you must log in.
Revision history for this message
Conor Curran (cjcurran) wrote :

Thanks Charles

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/volume-widget.c'
--- src/volume-widget.c 2012-02-13 20:08:02 +0000
+++ src/volume-widget.c 2012-03-12 16:45:57 +0000
@@ -56,7 +56,8 @@
56 GtkScrollType scroll,56 GtkScrollType scroll,
57 gdouble value,57 gdouble value,
58 gpointer user_data);58 gpointer user_data);
59static gboolean volume_widget_value_changed_cb(GtkRange *range, gpointer user_data);59static void volume_widget_primary_clicked(GtkWidget *widget, gpointer user_data);
60static void volume_widget_secondary_clicked(GtkWidget *widget, gpointer user_data);
60static void volume_widget_slider_grabbed(GtkWidget *widget, gpointer user_data);61static void volume_widget_slider_grabbed(GtkWidget *widget, gpointer user_data);
61static void volume_widget_slider_released(GtkWidget *widget, gpointer user_data);62static void volume_widget_slider_released(GtkWidget *widget, gpointer user_data);
62static void volume_widget_parent_changed (GtkWidget *widget, gpointer user_data);63static void volume_widget_parent_changed (GtkWidget *widget, gpointer user_data);
@@ -93,7 +94,8 @@
93 GtkWidget* volume_widget = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); 94 GtkWidget* volume_widget = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
94 95
95 g_signal_connect(volume_widget, "change-value", G_CALLBACK(volume_widget_change_value_cb), self); 96 g_signal_connect(volume_widget, "change-value", G_CALLBACK(volume_widget_change_value_cb), self);
96 g_signal_connect(volume_widget, "value-changed", G_CALLBACK(volume_widget_value_changed_cb), self); 97 g_signal_connect(priv->ido_volume_slider, "primary-clicked", G_CALLBACK(volume_widget_primary_clicked), self);
98 g_signal_connect(priv->ido_volume_slider, "secondary-clicked", G_CALLBACK(volume_widget_secondary_clicked), self);
97 g_signal_connect(priv->ido_volume_slider, "slider-grabbed", G_CALLBACK(volume_widget_slider_grabbed), self);99 g_signal_connect(priv->ido_volume_slider, "slider-grabbed", G_CALLBACK(volume_widget_slider_grabbed), self);
98 g_signal_connect(priv->ido_volume_slider, "slider-released", G_CALLBACK(volume_widget_slider_released), self);100 g_signal_connect(priv->ido_volume_slider, "slider-released", G_CALLBACK(volume_widget_slider_released), self);
99101
@@ -213,32 +215,6 @@
213 return FALSE;215 return FALSE;
214}216}
215217
216/*
217 We only want this callback to catch mouse icon press events
218 which set the slider to 0 or 100. Ignore all other events.
219*/
220static gboolean
221volume_widget_value_changed_cb (GtkRange *range, gpointer user_data)
222{
223
224 g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE);
225 VolumeWidget* mitem = VOLUME_WIDGET (user_data);
226 VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem);
227 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
228 gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
229
230 gboolean mute = g_variant_get_boolean (dbusmenu_menuitem_property_get_variant (priv->twin_item,
231 DBUSMENU_VOLUME_MENUITEM_MUTE));
232 if((current_value == 0 && mute == FALSE) || current_value == 100){
233/*
234 g_debug ("value changed - actual set %f", current_value);
235*/
236 volume_widget_update (mitem, current_value, "value-changed");
237 }
238
239 return FALSE;
240}
241
242void 218void
243volume_widget_update(VolumeWidget* self, gdouble update, gchar* label)219volume_widget_update(VolumeWidget* self, gdouble update, gchar* label)
244{220{
@@ -253,6 +229,30 @@
253 dbusmenu_menuitem_handle_event (priv->twin_item, source, new_volume, 0);229 dbusmenu_menuitem_handle_event (priv->twin_item, source, new_volume, 0);
254}230}
255231
232static void
233volume_widget_update_from_scale (VolumeWidget *self)
234{
235 g_return_if_fail (IS_VOLUME_WIDGET (self));
236
237 VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(self);
238 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
239 const gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
240 g_debug ("%s - setting value to %.0f", G_STRFUNC, current_value);
241 volume_widget_update (self, current_value, "value-changed");
242}
243
244static void
245volume_widget_primary_clicked (GtkWidget *widget G_GNUC_UNUSED, gpointer user_data)
246{
247 volume_widget_update_from_scale (VOLUME_WIDGET(user_data));
248}
249
250static void
251volume_widget_secondary_clicked(GtkWidget *widget, gpointer user_data)
252{
253 volume_widget_update_from_scale (VOLUME_WIDGET(user_data));
254}
255
256GtkWidget*256GtkWidget*
257volume_widget_get_ido_slider(VolumeWidget* self)257volume_widget_get_ido_slider(VolumeWidget* self)
258{258{

Subscribers

People subscribed via source and target branches