[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8d0a2e4dce 2/2: Fix build without X11 I18N
From: |
Po Lu |
Subject: |
master 8d0a2e4dce 2/2: Fix build without X11 I18N |
Date: |
Sun, 9 Jan 2022 20:06:26 -0500 (EST) |
branch: master
commit 8d0a2e4dce41fd811319e94e5f01e5fcf8b3c62a
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix build without X11 I18N
* src/xterm.c (event_handler_gdk):
(handle_one_xevent):
(x_draw_window_cursor):
(x_term_init): Fix build without HAVE_X_I18N.
---
src/xterm.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 51 insertions(+), 7 deletions(-)
diff --git a/src/xterm.c b/src/xterm.c
index 36b245ddc3..5e4941a4ae 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -194,8 +194,10 @@ static int x_noop_count;
static Lisp_Object xg_default_icon_file;
#endif
+#ifdef HAVE_X_I18N
/* Some functions take this as char *, not const char *. */
static char emacs_class[] = EMACS_CLASS;
+#endif
enum xembed_info
{
@@ -8333,6 +8335,38 @@ event_handler_gdk (GdkXEvent *gxev, GdkEvent *ev,
gpointer data)
unblock_input ();
return GDK_FILTER_REMOVE;
}
+#elif USE_GTK
+ if (dpyinfo && (dpyinfo->prefer_native_input
+ || x_gtk_use_native_input)
+ && (xev->type == KeyPress
+#ifdef HAVE_XINPUT2
+ /* GTK claims cookies for us, so we don't have to claim
+ them here. */
+ || (dpyinfo->supports_xi2
+ && xev->type == GenericEvent
+ && (xev->xgeneric.extension
+ == dpyinfo->xi2_opcode)
+ && (xev->xgeneric.evtype
+ == XI_KeyPress))
+#endif
+ ))
+ {
+ struct frame *f;
+
+#ifdef HAVE_XINPUT2
+ if (xev->type == GenericEvent)
+ f = x_any_window_to_frame (dpyinfo,
+ ((XIDeviceEvent *)
xev->xcookie.data)->event);
+ else
+#endif
+ f = x_any_window_to_frame (dpyinfo, xev->xany.window);
+
+ if (f && xg_filter_key (f, xev))
+ {
+ unblock_input ();
+ return GDK_FILTER_REMOVE;
+ }
+ }
#endif
if (! dpyinfo)
@@ -10727,6 +10761,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
goto XI_OTHER;
#endif
+ x_display_set_last_user_time (dpyinfo, xev->time);
+ ignore_next_mouse_click_timeout = 0;
+
+ f = x_any_window_to_frame (dpyinfo, xev->event);
+
XKeyPressedEvent xkey;
memset (&xkey, 0, sizeof xkey);
@@ -10761,6 +10800,14 @@ handle_one_xevent (struct x_display_info *dpyinfo,
goto XI_OTHER;
}
#endif
+#elif USE_GTK
+ if ((x_gtk_use_native_input
+ || dpyinfo->prefer_native_input)
+ && xg_filter_key (any, event))
+ {
+ *finish = X_EVENT_DROP;
+ goto XI_OTHER;
+ }
#endif
#ifdef HAVE_XKB
@@ -10793,11 +10840,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (keysym == NoSymbol)
goto XI_OTHER;
- x_display_set_last_user_time (dpyinfo, xev->time);
- ignore_next_mouse_click_timeout = 0;
-
- f = x_any_window_to_frame (dpyinfo, xev->event);
-
/* If mouse-highlight is an integer, input clears out
mouse highlighting. */
if (!hlinfo->mouse_face_hidden && FIXNUMP (Vmouse_highlight)
@@ -11754,7 +11796,9 @@ x_draw_window_cursor (struct window *w, struct
glyph_row *glyph_row, int x,
int y, enum text_cursor_kinds cursor_type,
int cursor_width, bool on_p, bool active_p)
{
+#ifdef HAVE_X_I18N
struct frame *f = XFRAME (WINDOW_FRAME (w));
+#endif
if (on_p)
{
@@ -15353,13 +15397,13 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
#endif
}
+#ifdef HAVE_X_I18N
{
AUTO_STRING (inputStyle, "inputStyle");
AUTO_STRING (InputStyle, "InputStyle");
Lisp_Object value = gui_display_get_resource (dpyinfo, inputStyle,
InputStyle,
Qnil, Qnil);
-#ifdef HAVE_X_I18N
if (STRINGP (value))
{
if (!strcmp (SSDATA (value), "callback"))
@@ -15377,8 +15421,8 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
dpyinfo->prefer_native_input = true;
#endif
}
-#endif
}
+#endif
#ifdef HAVE_X_SM
/* Only do this for the very first display in the Emacs session.