[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with
From: |
Po Lu |
Subject: |
bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk |
Date: |
Wed, 22 Dec 2021 09:09:11 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.60 (gnu/linux) |
Po Lu <luangruo@yahoo.com> writes:
> Andrey Listopadov <andreyorst@gmail.com> writes:
>
>> When `pixel-scroll-precision-mode' is disabled everything works fine.
>> When compiled without `--with-pgtk' but with `--with-xinput2'
>> `pixel-scroll-precision-mode' works as expected.
>
> Thanks, I will look into this now.
Please try the following patch to see if it resolves your problem.
Thanks.
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index bd61c65edd..bea2650584 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -6133,78 +6133,64 @@ scroll_event (GtkWidget * widget, GdkEvent * event,
gpointer * user_data)
}
else if (gdk_event_get_scroll_deltas (event, &delta_x, &delta_y))
{
- dpyinfo->scroll.acc_x += delta_x;
- dpyinfo->scroll.acc_y += delta_y;
- if (dpyinfo->scroll.acc_y >= dpyinfo->scroll.y_per_line
- || !mwheel_coalesce_scroll_events)
+ if (!mwheel_coalesce_scroll_events)
{
- int nlines = dpyinfo->scroll.acc_y / dpyinfo->scroll.y_per_line;
- inev.ie.kind = WHEEL_EVENT;
- inev.ie.modifiers |= down_modifier;
- inev.ie.arg = list3 (make_fixnum (nlines),
- make_float (-dpyinfo->scroll.acc_x * 100),
- make_float (-dpyinfo->scroll.acc_y * 100));
- if (!mwheel_coalesce_scroll_events)
- {
- dpyinfo->scroll.acc_y = 0;
- dpyinfo->scroll.acc_x = 0;
- }
- else
+ inev.ie.kind = ((fabs (delta_x) > fabs (delta_y))
+ ? HORIZ_WHEEL_EVENT
+ : WHEEL_EVENT);
+ inev.ie.modifiers = (inev.ie.kind == HORIZ_WHEEL_EVENT
+ ? (delta_x >= 0 ? down_modifier : up_modifier)
+ : (delta_y >= 0 ? down_modifier : up_modifier));
+ inev.ie.arg = list3 (Qnil, make_float (delta_x),
+ make_float (delta_y));
+ }
+ else
+ {
+ dpyinfo->scroll.acc_x += delta_x;
+ dpyinfo->scroll.acc_y += delta_y;
+ if (dpyinfo->scroll.acc_y >= dpyinfo->scroll.y_per_line)
{
+ int nlines = dpyinfo->scroll.acc_y / dpyinfo->scroll.y_per_line;
+ inev.ie.kind = WHEEL_EVENT;
+ inev.ie.modifiers |= down_modifier;
+ inev.ie.arg = list3 (make_fixnum (nlines),
+ make_float (-dpyinfo->scroll.acc_x * 100),
+ make_float (-dpyinfo->scroll.acc_y * 100));
dpyinfo->scroll.acc_y -= dpyinfo->scroll.y_per_line * nlines;
}
- }
- else if (dpyinfo->scroll.acc_y <= -dpyinfo->scroll.y_per_line
- || !mwheel_coalesce_scroll_events)
- {
- int nlines = -dpyinfo->scroll.acc_y / dpyinfo->scroll.y_per_line;
- inev.ie.kind = WHEEL_EVENT;
- inev.ie.modifiers |= up_modifier;
- inev.ie.arg = list3 (make_fixnum (nlines),
- make_float (-dpyinfo->scroll.acc_x * 100),
- make_float (-dpyinfo->scroll.acc_y * 100));
-
- if (!mwheel_coalesce_scroll_events)
+ else if (dpyinfo->scroll.acc_y <= -dpyinfo->scroll.y_per_line)
{
- dpyinfo->scroll.acc_y = 0;
- dpyinfo->scroll.acc_x = 0;
+ int nlines = -dpyinfo->scroll.acc_y / dpyinfo->scroll.y_per_line;
+ inev.ie.kind = WHEEL_EVENT;
+ inev.ie.modifiers |= up_modifier;
+ inev.ie.arg = list3 (make_fixnum (nlines),
+ make_float (-dpyinfo->scroll.acc_x * 100),
+ make_float (-dpyinfo->scroll.acc_y * 100));
+
+ dpyinfo->scroll.acc_y -= -dpyinfo->scroll.y_per_line * nlines;
}
- else
- dpyinfo->scroll.acc_y -= -dpyinfo->scroll.y_per_line * nlines;
- }
- else if (dpyinfo->scroll.acc_x >= dpyinfo->scroll.x_per_char
- || !mwheel_coalesce_scroll_events)
- {
- int nchars = dpyinfo->scroll.acc_x / dpyinfo->scroll.x_per_char;
- inev.ie.kind = HORIZ_WHEEL_EVENT;
- inev.ie.modifiers |= up_modifier;
- inev.ie.arg = list3 (make_fixnum (nchars),
- make_float (-dpyinfo->scroll.acc_x * 100),
- make_float (-dpyinfo->scroll.acc_y * 100));
-
- if (mwheel_coalesce_scroll_events)
- dpyinfo->scroll.acc_x -= dpyinfo->scroll.x_per_char * nchars;
- else
+ else if (dpyinfo->scroll.acc_x >= dpyinfo->scroll.x_per_char
+ || !mwheel_coalesce_scroll_events)
{
- dpyinfo->scroll.acc_x = 0;
- dpyinfo->scroll.acc_y = 0;
+ int nchars = dpyinfo->scroll.acc_x / dpyinfo->scroll.x_per_char;
+ inev.ie.kind = HORIZ_WHEEL_EVENT;
+ inev.ie.modifiers |= up_modifier;
+ inev.ie.arg = list3 (make_fixnum (nchars),
+ make_float (-dpyinfo->scroll.acc_x * 100),
+ make_float (-dpyinfo->scroll.acc_y * 100));
+
+ dpyinfo->scroll.acc_x -= dpyinfo->scroll.x_per_char * nchars;
}
- }
- else if (dpyinfo->scroll.acc_x <= -dpyinfo->scroll.x_per_char)
- {
- int nchars = -dpyinfo->scroll.acc_x / dpyinfo->scroll.x_per_char;
- inev.ie.kind = HORIZ_WHEEL_EVENT;
- inev.ie.modifiers |= down_modifier;
- inev.ie.arg = list3 (make_fixnum (nchars),
- make_float (-dpyinfo->scroll.acc_x * 100),
- make_float (-dpyinfo->scroll.acc_y * 100));
-
- if (mwheel_coalesce_scroll_events)
- dpyinfo->scroll.acc_x -= -dpyinfo->scroll.x_per_char * nchars;
- else
+ else if (dpyinfo->scroll.acc_x <= -dpyinfo->scroll.x_per_char)
{
- dpyinfo->scroll.acc_x = 0;
- dpyinfo->scroll.acc_y = 0;
+ int nchars = -dpyinfo->scroll.acc_x / dpyinfo->scroll.x_per_char;
+ inev.ie.kind = HORIZ_WHEEL_EVENT;
+ inev.ie.modifiers |= down_modifier;
+ inev.ie.arg = list3 (make_fixnum (nchars),
+ make_float (-dpyinfo->scroll.acc_x * 100),
+ make_float (-dpyinfo->scroll.acc_y * 100));
+
+ dpyinfo->scroll.acc_x -= -dpyinfo->scroll.x_per_char * nchars;
}
}
}
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/20
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/20
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/21
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Yuuki Harano, 2021/12/21
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/21
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/21
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk,
Po Lu <=
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Po Lu, 2021/12/22
- bug#52685: 29.0.50; Horizontal scrolling doesn't work when compiled with pgtk, Andrey Listopadov, 2021/12/22