summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mate-volume-control/gvc-channel-bar.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/mate-volume-control/gvc-channel-bar.c b/mate-volume-control/gvc-channel-bar.c
index 912eaa6..c4c85b5 100644
--- a/mate-volume-control/gvc-channel-bar.c
+++ b/mate-volume-control/gvc-channel-bar.c
@@ -381,11 +381,18 @@ update_adjustment_value (GvcChannelBar *bar)
else
value = mate_mixer_stream_control_get_volume (bar->priv->control);
+ gdouble maximum = gtk_adjustment_get_upper (bar->priv->adjustment);
+ gdouble minimum = gtk_adjustment_get_lower (bar->priv->adjustment);
+ gdouble range = maximum - minimum;
+
+ /* round value to nearest hundreth of the range */
+ gdouble new_value = minimum + round (((value - minimum) / range) * 100) * (range / 100);
+
g_signal_handlers_block_by_func (G_OBJECT (bar->priv->adjustment),
on_adjustment_value_changed,
bar);
- gtk_adjustment_set_value (bar->priv->adjustment, value);
+ gtk_adjustment_set_value (bar->priv->adjustment, new_value);
g_signal_handlers_unblock_by_func (G_OBJECT (bar->priv->adjustment),
on_adjustment_value_changed,
@@ -861,6 +868,7 @@ gvc_channel_bar_scroll (GvcChannelBar *bar, GdkScrollDirection direction)
}
gtk_adjustment_set_value (bar->priv->adjustment, value);
+
return TRUE;
}