aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2021-12-08 14:18:09 +0800
committerPo Lu2021-12-08 14:18:09 +0800
commit41b1d223c6ab7bca1b626a4c07a4f2dda2855feb (patch)
treec353ea66d42402e91da18fb78a55c4e455c4cba0 /src
parentbdeb189cf202f9661f783aebd4852b401858958b (diff)
parentbf79dad3f20345ddf095325ce22c0f2a3408d3ba (diff)
downloademacs-41b1d223c6ab7bca1b626a4c07a4f2dda2855feb.tar.gz
emacs-41b1d223c6ab7bca1b626a4c07a4f2dda2855feb.zip
Merge remote-tracking branch 'origin/master' into feature/pgtk
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c9
-rw-r--r--src/xwidget.c7
-rw-r--r--src/xwidget.h2
3 files changed, 11 insertions, 7 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 3f7b9560345..ae0daa79f31 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -9851,6 +9851,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
9851 XIValuatorState *states; 9851 XIValuatorState *states;
9852 double *values; 9852 double *values;
9853 bool found_valuator = false; 9853 bool found_valuator = false;
9854 bool any_stop_p = false;
9854 9855
9855 /* A fake XMotionEvent for x_note_mouse_movement. */ 9856 /* A fake XMotionEvent for x_note_mouse_movement. */
9856 XMotionEvent ev; 9857 XMotionEvent ev;
@@ -10003,9 +10004,13 @@ handle_one_xevent (struct x_display_info *dpyinfo,
10003 if (val->horizontal) 10004 if (val->horizontal)
10004 xv_total_x += delta; 10005 xv_total_x += delta;
10005 else 10006 else
10006 xv_total_y += -delta; 10007 xv_total_y += delta;
10007 10008
10008 found_valuator = true; 10009 found_valuator = true;
10010
10011 if (delta == 0.0)
10012 any_stop_p = true;
10013
10009 continue; 10014 continue;
10010 } 10015 }
10011#endif 10016#endif
@@ -10092,7 +10097,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
10092 if (found_valuator) 10097 if (found_valuator)
10093 xwidget_scroll (xv, xev->event_x, xev->event_y, 10098 xwidget_scroll (xv, xev->event_x, xev->event_y,
10094 xv_total_x, xv_total_y, xev->mods.effective, 10099 xv_total_x, xv_total_y, xev->mods.effective,
10095 xev->time); 10100 xev->time, any_stop_p);
10096 else 10101 else
10097 xwidget_motion_notify (xv, xev->event_x, xev->event_y, 10102 xwidget_motion_notify (xv, xev->event_x, xev->event_y,
10098 xev->mods.effective, xev->time); 10103 xev->mods.effective, xev->time);
diff --git a/src/xwidget.c b/src/xwidget.c
index 749a3220a38..bd64f483377 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -1066,7 +1066,8 @@ xwidget_motion_notify (struct xwidget_view *view,
1066 1066
1067void 1067void
1068xwidget_scroll (struct xwidget_view *view, double x, double y, 1068xwidget_scroll (struct xwidget_view *view, double x, double y,
1069 double dx, double dy, uint state, Time time) 1069 double dx, double dy, uint state, Time time,
1070 bool stop_p)
1070{ 1071{
1071 GdkEvent *xg_event; 1072 GdkEvent *xg_event;
1072 GtkWidget *target; 1073 GtkWidget *target;
@@ -1101,9 +1102,7 @@ xwidget_scroll (struct xwidget_view *view, double x, double y,
1101 xg_event->scroll.delta_x = dx; 1102 xg_event->scroll.delta_x = dx;
1102 xg_event->scroll.delta_y = dy; 1103 xg_event->scroll.delta_y = dy;
1103 xg_event->scroll.device = find_suitable_pointer (view->frame); 1104 xg_event->scroll.device = find_suitable_pointer (view->frame);
1104 1105 xg_event->scroll.is_stop = stop_p;
1105 if (!(fabs (dx) > 0) || !(fabs (dy) > 0))
1106 xg_event->scroll.is_stop = TRUE;
1107 1106
1108 g_object_ref (xg_event->any.window); 1107 g_object_ref (xg_event->any.window);
1109 1108
diff --git a/src/xwidget.h b/src/xwidget.h
index f2d497c0920..a03006fde9a 100644
--- a/src/xwidget.h
+++ b/src/xwidget.h
@@ -199,7 +199,7 @@ extern void xwidget_motion_or_crossing (struct xwidget_view *,
199extern void xwidget_motion_notify (struct xwidget_view *, double, 199extern void xwidget_motion_notify (struct xwidget_view *, double,
200 double, uint, Time); 200 double, uint, Time);
201extern void xwidget_scroll (struct xwidget_view *, double, double, 201extern void xwidget_scroll (struct xwidget_view *, double, double,
202 double, double, uint, Time); 202 double, double, uint, Time, bool);
203#endif 203#endif
204#endif 204#endif
205#else 205#else