aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2021-12-27 12:43:11 +0800
committerPo Lu2021-12-27 12:43:50 +0800
commit53cf2cf81b224aab8a777aea847fbdc1e7a6b903 (patch)
treefc33b7f5fcb4b2a44a78a7f18f9c4d09e434b64b /src
parentf522a064cf1ec8804fb938886b10bc82650e1a68 (diff)
downloademacs-53cf2cf81b224aab8a777aea847fbdc1e7a6b903.tar.gz
emacs-53cf2cf81b224aab8a777aea847fbdc1e7a6b903.zip
* src/pgtkterm.c (pgtk_handle_event): Add pinch event support.
Diffstat (limited to 'src')
-rw-r--r--src/pgtkterm.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index c6b56b271e8..c75dab5130a 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -4812,8 +4812,44 @@ pgtk_any_window_to_frame (GdkWindow * window)
4812} 4812}
4813 4813
4814static gboolean 4814static gboolean
4815pgtk_handle_event (GtkWidget * widget, GdkEvent * event, gpointer * data) 4815pgtk_handle_event (GtkWidget *widget, GdkEvent *event, gpointer *data)
4816{ 4816{
4817#if GTK_CHECK_VERSION (3, 18, 0)
4818 struct frame *f;
4819 union buffered_input_event inev;
4820 GtkWidget *frame_widget;
4821 gint x, y;
4822
4823 if (event->type == GDK_TOUCHPAD_PINCH
4824 && (event->touchpad_pinch.phase
4825 != GDK_TOUCHPAD_GESTURE_PHASE_END))
4826 {
4827 f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
4828 frame_widget = FRAME_GTK_WIDGET (f);
4829
4830 gtk_widget_translate_coordinates (widget, frame_widget,
4831 lrint (event->touchpad_pinch.x),
4832 lrint (event->touchpad_pinch.y),
4833 &x, &y);
4834 if (f)
4835 {
4836
4837 inev.ie.kind = PINCH_EVENT;
4838 XSETFRAME (inev.ie.frame_or_window, f);
4839 XSETINT (inev.ie.x, x);
4840 XSETINT (inev.ie.y, y);
4841 inev.ie.arg = list4 (make_float (event->touchpad_pinch.dx),
4842 make_float (event->touchpad_pinch.dy),
4843 make_float (event->touchpad_pinch.scale),
4844 make_float (event->touchpad_pinch.angle_delta));
4845 inev.ie.modifiers = pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f),
4846 event->touchpad_pinch.state);
4847 evq_enqueue (&inev);
4848 }
4849
4850 return TRUE;
4851 }
4852#endif
4817 return FALSE; 4853 return FALSE;
4818} 4854}
4819 4855