0
0
mirror of https://github.com/vim/vim.git synced 2025-10-08 06:04:08 -04:00

patch 9.1.0086: Problem when scrolling using slow touchpads scroll event

Problem:  Problem when scrolling using slow touchpads scroll event
Solution: better ways to determine if a smooth scroll has ended (when
          available) (lilydjwg)

related: #13997

Signed-off-by: lilydjwg <lilydjwg@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
lilydjwg
2024-02-09 19:24:23 +01:00
committed by Christian Brabandt
parent c4d4a1e041
commit 725c7c31a4
2 changed files with 18 additions and 1 deletions

View File

@@ -2049,7 +2049,7 @@ button_press_event(GtkWidget *widget,
} }
/* /*
* GTK+ 2 abstracts scrolling via the GdkEventScroll. * GTK+ abstracts scrolling via the GdkEventScroll.
*/ */
static gboolean static gboolean
scroll_event(GtkWidget *widget, scroll_event(GtkWidget *widget,
@@ -2060,7 +2060,9 @@ scroll_event(GtkWidget *widget,
int_u vim_modifiers; int_u vim_modifiers;
#if GTK_CHECK_VERSION(3,4,0) #if GTK_CHECK_VERSION(3,4,0)
static double acc_x, acc_y; static double acc_x, acc_y;
#if !GTK_CHECK_VERSION(3,22,0)
static guint32 last_smooth_event_time; static guint32 last_smooth_event_time;
#endif
#define DT_X11 1 #define DT_X11 1
#define DT_WAYLAND 2 #define DT_WAYLAND 2
static display_type; static display_type;
@@ -2087,12 +2089,25 @@ scroll_event(GtkWidget *widget,
break; break;
#if GTK_CHECK_VERSION(3,4,0) #if GTK_CHECK_VERSION(3,4,0)
case GDK_SCROLL_SMOOTH: case GDK_SCROLL_SMOOTH:
if (event->is_stop)
{
acc_x = acc_y = 0;
// this event tells us to stop, without an actual moving
return FALSE;
}
#if GTK_CHECK_VERSION(3,22,0)
if (gdk_device_get_axes(event->device) & GDK_AXIS_FLAG_WHEEL)
// this is from a wheel (as oppose to a touchpad / trackpoint)
#else
if (event->time - last_smooth_event_time > 50) if (event->time - last_smooth_event_time > 50)
// reset our accumulations after 50ms of silence // reset our accumulations after 50ms of silence
#endif
acc_x = acc_y = 0; acc_x = acc_y = 0;
acc_x += event->delta_x; acc_x += event->delta_x;
acc_y += event->delta_y; acc_y += event->delta_y;
#if !GTK_CHECK_VERSION(3,22,0)
last_smooth_event_time = event->time; last_smooth_event_time = event->time;
#endif
break; break;
#endif #endif
default: // This shouldn't happen default: // This shouldn't happen

View File

@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
86,
/**/ /**/
85, 85,
/**/ /**/