gnucash maint: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Mon Mar 7 12:18:18 EST 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/f8fda225 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b5e0abd3 (commit)
	from  https://github.com/Gnucash/gnucash/commit/3ab1d32f (commit)



commit f8fda225b83d03d2f8ea14a22ed2d427a7f20f39
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Mar 7 09:17:59 2022 -0800

    [register] Enable horizontal scrolling with a touchpad.

diff --git a/gnucash/register/register-gnome/gnucash-sheet.c b/gnucash/register/register-gnome/gnucash-sheet.c
index 218aeb462..acbfcb01c 100644
--- a/gnucash/register/register-gnome/gnucash-sheet.c
+++ b/gnucash/register/register-gnome/gnucash-sheet.c
@@ -1362,12 +1362,21 @@ gnucash_sheet_button_release_event (GtkWidget *widget, GdkEventButton *event)
     return TRUE;
 }
 
+static float
+clamp_scrollable_value (float value, GtkAdjustment* adj)
+{
+    float lower = gtk_adjustment_get_lower (adj);
+    float upper = gtk_adjustment_get_upper (adj);
+    float size = gtk_adjustment_get_page_size (adj);
+    return CLAMP(value, lower, upper - size);
+
+}
 static gboolean
 gnucash_scroll_event (GtkWidget *widget, GdkEventScroll *event)
 {
     GnucashSheet *sheet;
     GtkAdjustment *vadj;
-    gfloat v_value;
+    gfloat h_value, v_value;
 
     g_return_val_if_fail (widget != NULL, TRUE);
     g_return_val_if_fail (GNUCASH_IS_SHEET(widget), TRUE);
@@ -1386,14 +1395,16 @@ gnucash_scroll_event (GtkWidget *widget, GdkEventScroll *event)
         v_value += gtk_adjustment_get_step_increment (vadj);
         break;
     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);
         v_value += event->delta_y;
         break;
     default:
         return FALSE;
     }
-    v_value = CLAMP(v_value, gtk_adjustment_get_lower (vadj),
-              gtk_adjustment_get_upper (vadj) - gtk_adjustment_get_page_size (vadj));
-
+    v_value = clamp_scrollable_value (v_value, vadj);
     gtk_adjustment_set_value (vadj, v_value);
 
     if (event->delta_y == 0)

commit b5e0abd30ea56b6401ba01e4b8ed383f1953bddb
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Mar 7 09:04:52 2022 -0800

    https://bugs.gnucash.org/show_bug.cgi?id=797610
    
    Trackpad scrolling events include an increment so use that instead of
    the step size intended for scroll wheels.

diff --git a/gnucash/register/register-gnome/gnucash-sheet.c b/gnucash/register/register-gnome/gnucash-sheet.c
index 03581106b..218aeb462 100644
--- a/gnucash/register/register-gnome/gnucash-sheet.c
+++ b/gnucash/register/register-gnome/gnucash-sheet.c
@@ -1386,10 +1386,7 @@ gnucash_scroll_event (GtkWidget *widget, GdkEventScroll *event)
         v_value += gtk_adjustment_get_step_increment (vadj);
         break;
     case GDK_SCROLL_SMOOTH:
-        if (event->delta_y < 0)
-            v_value -= gtk_adjustment_get_step_increment (vadj);
-        if (event->delta_y > 0)
-            v_value += gtk_adjustment_get_step_increment (vadj);
+        v_value += event->delta_y;
         break;
     default:
         return FALSE;



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



More information about the gnucash-changes mailing list