[gtk+/wip/matthiasc/zoom-scroll-improvements: 1/4] long press: Add a private API to slow it down



commit 7b90dc50de9c5a6e7e960b6168215b003b0dc7d2
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Feb 22 17:48:39 2015 -0500

    long press: Add a private API to slow it down
    
    Add a way to set a delay factor that can be used
    to make the long press more or less sensitive.
    Keep this private for now.

 gtk/gtkgesturelongpress.c        |   20 +++++++++++++++++++-
 gtk/gtkgesturelongpressprivate.h |    3 +++
 2 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkgesturelongpress.c b/gtk/gtkgesturelongpress.c
index 09ac12d..920ba52 100644
--- a/gtk/gtkgesturelongpress.c
+++ b/gtk/gtkgesturelongpress.c
@@ -54,6 +54,7 @@ struct _GtkGestureLongPressPrivate
   gdouble initial_x;
   gdouble initial_y;
 
+  gdouble factor;
   guint timeout_id;
   guint delay;
   guint cancelled : 1;
@@ -67,6 +68,10 @@ G_DEFINE_TYPE_WITH_PRIVATE (GtkGestureLongPress, gtk_gesture_long_press, GTK_TYP
 static void
 gtk_gesture_long_press_init (GtkGestureLongPress *gesture)
 {
+  GtkGestureLongPressPrivate *priv;
+
+  priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (gesture));
+  priv->factor = 1.0;
 }
 
 static gboolean
@@ -121,7 +126,10 @@ gtk_gesture_long_press_begin (GtkGesture       *gesture,
 
   widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
   g_object_get (gtk_widget_get_settings (widget),
-               "gtk-long-press-time", &delay, NULL);
+                "gtk-long-press-time", &delay,
+                NULL);
+
+  delay = (gint)(priv->factor * delay);
 
   gtk_gesture_get_point (gesture, sequence,
                          &priv->initial_x, &priv->initial_y);
@@ -276,3 +284,13 @@ gtk_gesture_long_press_new (GtkWidget *widget)
                        "widget", widget,
                        NULL);
 }
+
+void
+gtk_gesture_long_press_set_delay_factor (GtkGestureLongPress *gesture,
+                                         gdouble              factor)
+{
+  GtkGestureLongPressPrivate *priv;
+
+  priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (gesture));
+  priv->factor = factor;
+}
diff --git a/gtk/gtkgesturelongpressprivate.h b/gtk/gtkgesturelongpressprivate.h
index 5b9aa88..01c008b 100644
--- a/gtk/gtkgesturelongpressprivate.h
+++ b/gtk/gtkgesturelongpressprivate.h
@@ -41,4 +41,7 @@ struct _GtkGestureLongPressClass
   gpointer padding[10];
 };
 
+void gtk_gesture_long_press_set_delay_factor (GtkGestureLongPress *gesture,
+                                              gdouble              factor);
+
 #endif /* __GTK_GESTURE_LONG_PRESS_PRIVATE_H__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]