[gtk+] Fine-tune the proximity hovering for scrollbars



commit 9fde44ac10eb164d7d18b5b9838f902ad5af4d20
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jan 18 14:28:47 2015 -0500

    Fine-tune the proximity hovering for scrollbars
    
    Reduce the distance at which we expand the scrollbar,
    and add some hysteresis.

 gtk/gtkscrolledwindow.c |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index e1128e0..3806d73 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -157,7 +157,8 @@
 #define INDICATOR_FADE_OUT_DELAY 2000
 #define INDICATOR_FADE_OUT_DURATION 1000
 #define INDICATOR_FADE_OUT_TIME 500
-#define INDICATOR_CLOSE_DISTANCE 50
+#define INDICATOR_CLOSE_DISTANCE 10
+#define INDICATOR_FAR_DISTANCE 20
 
 /* Scrolled off indication */
 #define UNDERSHOOT_SIZE 40
@@ -966,6 +967,7 @@ event_close_to_indicator (GtkScrolledWindow *sw,
   GtkWidget *event_widget;
   gint win_x, win_y;
   gdouble x, y;
+  gint distance;
 
   priv = sw->priv;
   event_widget = gtk_get_event_widget (event);
@@ -988,12 +990,17 @@ event_close_to_indicator (GtkScrolledWindow *sw,
       y = ycoord;
     }
 
+  if (indicator->over)
+    distance = INDICATOR_FAR_DISTANCE;
+  else
+    distance = INDICATOR_CLOSE_DISTANCE;
+
   if ((indicator == &priv->hindicator &&
-       y >= win_y - INDICATOR_CLOSE_DISTANCE &&
-       y < win_y + indicator_alloc.height + INDICATOR_CLOSE_DISTANCE) ||
+       y >= win_y - distance &&
+       y < win_y + indicator_alloc.height + distance) ||
       (indicator == &priv->vindicator &&
-       x >= win_x - INDICATOR_CLOSE_DISTANCE  &&
-       x < win_x + indicator_alloc.width + INDICATOR_CLOSE_DISTANCE))
+       x >= win_x - distance &&
+       x < win_x + indicator_alloc.width + distance))
     return TRUE;
 
   return FALSE;


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