diff options
| author | Po Lu | 2021-12-27 12:43:11 +0800 |
|---|---|---|
| committer | Po Lu | 2021-12-27 12:43:50 +0800 |
| commit | 53cf2cf81b224aab8a777aea847fbdc1e7a6b903 (patch) | |
| tree | fc33b7f5fcb4b2a44a78a7f18f9c4d09e434b64b /src | |
| parent | f522a064cf1ec8804fb938886b10bc82650e1a68 (diff) | |
| download | emacs-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.c | 38 |
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 | ||
| 4814 | static gboolean | 4814 | static gboolean |
| 4815 | pgtk_handle_event (GtkWidget * widget, GdkEvent * event, gpointer * data) | 4815 | pgtk_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 | ||