talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit e90e11cadc5546567f47bb13c50020eb822b75d4
parent 73557a0db41ef99a726881a1af8b516404a5bc2a
Author: Jonathan Boeing <jonathan@claws-mail.org>
Date:   Tue, 14 Sep 2021 18:31:01 -0700

Fix scroll to next/prev page in pdf_viewer

Add handling for GDK_SCROLL_SMOOTH events in scroll callback

Diffstat:
Msrc/plugins/pdf_viewer/poppler_viewer.c | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/plugins/pdf_viewer/poppler_viewer.c b/src/plugins/pdf_viewer/poppler_viewer.c @@ -1111,6 +1111,7 @@ static gboolean pdf_viewer_scroll_cb(GtkWidget *widget, GdkEventScroll *event, GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(viewer->scrollwin)); static gboolean in_scroll_cb = FALSE; gboolean handled = FALSE; + gdouble delta_x = 0.0, delta_y = 0.0; gint cur_p = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)); if (in_scroll_cb) @@ -1128,14 +1129,18 @@ static gboolean pdf_viewer_scroll_cb(GtkWidget *widget, GdkEventScroll *event, return TRUE; } - if (event->direction == GDK_SCROLL_UP && + if (event->direction == GDK_SCROLL_SMOOTH) { + gdk_event_get_scroll_deltas((GdkEvent *)event, &delta_x, &delta_y); + } + + if ((delta_y < 0.0 || event->direction == GDK_SCROLL_UP) && gtk_adjustment_get_value(adj) == gtk_adjustment_get_lower(adj) && cur_p > 1) { gtk_spin_button_spin(GTK_SPIN_BUTTON(viewer->cur_page), GTK_SPIN_STEP_BACKWARD, 1); gtk_adjustment_set_value(adj, gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj)); handled = TRUE; - } else if (event->direction == GDK_SCROLL_DOWN && + } else if ((delta_y > 0.0 || event->direction == GDK_SCROLL_DOWN) && gtk_adjustment_get_value(adj) + gtk_adjustment_get_page_size(adj) == gtk_adjustment_get_upper(adj) && cur_p < viewer->num_pages) { gtk_spin_button_spin(GTK_SPIN_BUTTON(viewer->cur_page), GTK_SPIN_STEP_FORWARD, 1);