[gtk+] scalebutton: Handle smooth scroll events
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] scalebutton: Handle smooth scroll events
- Date: Tue, 26 Aug 2014 12:55:28 +0000 (UTC)
commit bb3a8edb9f21e486f1972c72c4a4090af790e7d7
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Aug 22 19:15:57 2014 +0200
scalebutton: Handle smooth scroll events
This has the double effect to make scale button truly smooth, and make
scrolling work on wayland, since all scrolling is "smooth" there.
https://bugzilla.gnome.org/show_bug.cgi?id=720269
gtk/gtkscalebutton.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkscalebutton.c b/gtk/gtkscalebutton.c
index c979f61..24976b0 100644
--- a/gtk/gtkscalebutton.c
+++ b/gtk/gtkscalebutton.c
@@ -357,7 +357,7 @@ gtk_scale_button_init (GtkScaleButton *button)
/* Need a local reference to the adjustment */
g_object_ref (priv->adjustment);
- gtk_widget_add_events (GTK_WIDGET (button), GDK_SCROLL_MASK);
+ gtk_widget_add_events (GTK_WIDGET (button), GDK_SMOOTH_SCROLL_MASK);
}
static void
@@ -786,12 +786,18 @@ gtk_scale_button_scroll (GtkWidget *widget,
if (d > gtk_adjustment_get_upper (adjustment))
d = gtk_adjustment_get_upper (adjustment);
}
- else
+ else if (event->direction == GDK_SCROLL_DOWN)
{
d -= gtk_adjustment_get_step_increment (adjustment);
if (d < gtk_adjustment_get_lower (adjustment))
d = gtk_adjustment_get_lower (adjustment);
}
+ else if (event->direction == GDK_SCROLL_SMOOTH)
+ {
+ d += event->delta_y * gtk_adjustment_get_step_increment (adjustment);
+ d = CLAMP (d, gtk_adjustment_get_lower (adjustment),
+ gtk_adjustment_get_upper (adjustment));
+ }
gtk_scale_button_set_value (button, d);
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]