gnucash maint: Bug 798474 - Windows 10: Mouse scroll wheel on register...

John Ralls jralls at code.gnucash.org
Sun Mar 13 17:29:33 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/aca83513 (commit)
	from  https://github.com/Gnucash/gnucash/commit/7fd17ac0 (commit)



commit aca8351376da38fbfa2b8fb632b0868e13381f00
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Mar 13 13:30:49 2022 -0700

    Bug 798474 - Windows 10: Mouse scroll wheel on register...
    
    only scrolls 1 pixel at a time (instead of 1 line at a time)
    
    Gdk supports fine-resolution smooth scrolling on macOS only.

diff --git a/gnucash/register/register-gnome/gnucash-sheet.c b/gnucash/register/register-gnome/gnucash-sheet.c
index acbfcb01c..2991e31e7 100644
--- a/gnucash/register/register-gnome/gnucash-sheet.c
+++ b/gnucash/register/register-gnome/gnucash-sheet.c
@@ -1377,6 +1377,7 @@ gnucash_scroll_event (GtkWidget *widget, GdkEventScroll *event)
     GnucashSheet *sheet;
     GtkAdjustment *vadj;
     gfloat h_value, v_value;
+    int direction;
 
     g_return_val_if_fail (widget != NULL, TRUE);
     g_return_val_if_fail (GNUCASH_IS_SHEET(widget), TRUE);
@@ -1394,12 +1395,22 @@ gnucash_scroll_event (GtkWidget *widget, GdkEventScroll *event)
     case GDK_SCROLL_DOWN:
         v_value += gtk_adjustment_get_step_increment (vadj);
         break;
+/* GdkQuartz reserves GDK_SCROLL_SMOOTH for high-resolution touchpad
+ * scrolling events, and in that case scrolling by line is much too
+ * fast. Gdk/Wayland and Gdk/Win32 pass GDK_SCROLL_SMOOTH for all
+ * scroll-wheel events and expect coarse resolution.
+ */
     case GDK_SCROLL_SMOOTH:
         h_value = gtk_adjustment_get_value (sheet->hadj);
         h_value += event->delta_x;
         h_value = clamp_scrollable_value (h_value, sheet->hadj);
         gtk_adjustment_set_value (sheet->hadj, h_value);
+#if defined MAC_INTEGRATION
         v_value += event->delta_y;
+#else
+        direction = event->delta_y > 0 ? 1 : event->delta_y < 0 ? -1 : 0;
+        v_value += gtk_adjustment_get_step_increment (vadj) * direction;
+#endif
         break;
     default:
         return FALSE;



Summary of changes:
 gnucash/register/register-gnome/gnucash-sheet.c | 11 +++++++++++
 1 file changed, 11 insertions(+)



More information about the gnucash-changes mailing list