commit f91ae9479000eb3c91eaed2a1300678466b823d4 (HEAD, refs/remotes/origin/master) Author: Eli Zaretskii Date: Mon Oct 10 09:42:19 2022 +0300 ; * lisp/progmodes/gdb-mi.el (gdb): Fix a typo. (Bug#58400) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 6e8032b7ea..0de3d213a4 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -966,7 +966,7 @@ detailed description of this mode. (if gdb-active-process (gdb-gud-context-command "-exec-continue") "-exec-run"))) - "C-v" "Start or continue execution. Use a prefix to specify arguments.") + "\C-v" "Start or continue execution. Use a prefix to specify arguments.") ;; For debugging Emacs only. (gud-def gud-pp commit 93136169cba9c7c8f827dbc2f579b95a75d15fad Author: Michael Heerdegen Date: Sun Sep 18 12:26:53 2022 +0200 Try to speed up extended command shorthand computation Discussed in Bug#51143. * lisp/simple.el (execute-extended-command--shorter): Compute a complete list of `commandp' symbols once. This significantly speeds up complicated cases while the slowdown of simple cases is still accetable. diff --git a/lisp/simple.el b/lisp/simple.el index d2dcbe27a0..e804f717b0 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2465,9 +2465,13 @@ Also see `suggest-key-bindings'." (defun execute-extended-command--shorter (name typed) (let ((candidates '()) + commands (max (length typed)) (len 1) binding) + ;; Precompute a list of commands once to avoid repeated `commandp' testing + ;; of symbols in the `completion-try-completion' call inside the loop below + (mapatoms (lambda (s) (when (commandp s) (push s commands)))) (while (and (not binding) (progn (unless candidates @@ -2480,8 +2484,8 @@ Also see `suggest-key-bindings'." (input-pending-p) ;Dummy call to trigger input-processing, bug#23002. (let ((candidate (pop candidates))) (when (equal name - (car-safe (completion-try-completion - candidate obarray 'commandp len))) + (car-safe (completion-try-completion + candidate commands nil len))) (setq binding candidate)))) binding)) commit 90c3a25eb112f9c2b3d5fe2b5697160f7df10324 Author: समीर सिंह Sameer Singh Date: Sat Oct 8 15:37:00 2022 +0530 Set the PARENTS argument for language environments * lisp/language/indonesian.el * lisp/language/philippine.el * lisp/language/misc-lang.el (set-language-info-alist): Add PARENTS argument. (Bug#58376) diff --git a/lisp/language/indonesian.el b/lisp/language/indonesian.el index 699f819254..5afcd27759 100644 --- a/lisp/language/indonesian.el +++ b/lisp/language/indonesian.el @@ -34,7 +34,8 @@ (input-method . "balinese") (sample-text . "Balinese (ᬅᬓ᭄ᬱᬭᬩᬮᬶ) ᬒᬁᬲ᭄ᬯᬲ᭄ᬢ᭄ᬬᬲ᭄ᬢᬸ") (documentation . "\ -Balinese language and its script are supported in this language environment."))) +Balinese language and its script are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Javanese" '((charset unicode) @@ -43,7 +44,8 @@ Balinese language and its script are supported in this language environment."))) (input-method . "javanese") (sample-text . "Javanese (ꦲꦏ꧀ꦱꦫꦗꦮ) ꦲꦭꦺꦴ") (documentation . "\ -Javanese language and its script are supported in this language environment."))) +Javanese language and its script are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Sundanese" '((charset unicode) @@ -52,7 +54,8 @@ Javanese language and its script are supported in this language environment."))) (input-method . "sundanese") (sample-text . "Sundanese (ᮃᮊ᮪ᮞᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪") (documentation . "\ -Sundanese language and its script are supported in this language environment."))) +Sundanese language and its script are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Batak" '((charset unicode) @@ -62,7 +65,8 @@ Sundanese language and its script are supported in this language environment.")) (sample-text . "Batak (ᯘᯮᯒᯗ᯲ᯅᯗᯂ᯲) ᯂᯬᯒᯘ᯲ / ᯔᯧᯐᯬᯀᯱᯐᯬᯀᯱ") (documentation . "\ Languages that use the Batak script, such as Karo, Toba, Pakpak, Mandailing -and Simalungun, are supported in this language environment."))) +and Simalungun, are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Rejang" '((charset unicode) @@ -71,7 +75,8 @@ and Simalungun, are supported in this language environment."))) (input-method . "rejang") (sample-text . "Rejang (ꥆꤰ꥓ꤼꤽ ꤽꥍꤺꥏ) ꤸꥉꥐꤺꥉꥂꥎ") (documentation . "\ -Rejang language and its script are supported in this language environment."))) +Rejang language and its script are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Makasar" '((charset unicode) @@ -80,7 +85,8 @@ Rejang language and its script are supported in this language environment."))) (input-method . "makasar") (sample-text . "Makasar (𑻪𑻢𑻪𑻢) 𑻦𑻤𑻵𑻱") (documentation . "\ -Makassarese language and its script Makasar are supported in this language environment."))) +Makassarese language and its script Makasar are supported in this language environment.")) + '("Indonesian")) (set-language-info-alist "Buginese" '((charset unicode) @@ -89,7 +95,8 @@ Makassarese language and its script Makasar are supported in this language envir (input-method . "lontara") (sample-text . "Buginese (ᨒᨚᨈᨑ) ᨖᨒᨚ") (documentation . "\ -Buginese language and its script Lontara are supported in this language environment."))) +Buginese language and its script Lontara are supported in this language environment.")) + '("Indonesian")) ;; Balinese composition rules (let ((consonant "[\x1B13-\x1B33\x1B45-\x1B4B]") diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el index 370be4b4a3..c34017d9b3 100644 --- a/lisp/language/misc-lang.el +++ b/lisp/language/misc-lang.el @@ -228,7 +228,8 @@ thin (i.e. 1-dot width) space." (sample-text . "Hanifi Rohingya (𐴌𐴟𐴇𐴥𐴝𐴚𐴒𐴙𐴝 𐴇𐴝𐴕𐴞𐴉𐴞 𐴓𐴠𐴑𐴤𐴝) 𐴀𐴝𐴏𐴓𐴝𐴀𐴡𐴤𐴛𐴝𐴓𐴝𐴙𐴑𐴟𐴔") (documentation . "\ Rohingya language and its script Hanifi Rohingya are supported -in this language environment."))) +in this language environment.")) + '("Misc")) ;; Hanifi Rohingya composition rules (set-char-table-range @@ -251,7 +252,8 @@ in this language environment."))) (sample-text . "Kharoṣṭhī (𐨑𐨪𐨆𐨛𐨁) 𐨣𐨨𐨲𐨪𐨆 𐨐𐨪𐨅𐨨𐨁") (documentation . "\ Language environment for Gāndhārī, Sanskrit, and other languages -using the Kharoṣṭhī script."))) +using the Kharoṣṭhī script.")) + '("Misc")) (let ((consonant "[\U00010A00\U00010A10-\U00010A35]") (vowel "[\U00010A01-\U00010A06]") @@ -281,7 +283,8 @@ using the Kharoṣṭhī script."))) (sample-text . "Adlam (𞤀𞤣𞤤𞤢𞤥) 𞤅𞤢𞤤𞤢𞥄𞤥") (documentation . "\ Fulani language and its script Adlam are supported -in this language environment."))) +in this language environment.")) + '("Misc")) ;; Adlam composition rules (set-char-table-range @@ -303,7 +306,8 @@ in this language environment."))) (sample-text . "Mende Kikakui (𞠀𞠁𞠂) 𞠛𞠉") (documentation . "\ Mende language and its script Kikakui are supported -in this language environment."))) +in this language environment.")) + '("Misc")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Gothic @@ -317,7 +321,8 @@ in this language environment."))) (sample-text . "Gothic (𐌲𐌿𐍄𐌹𐍃𐌺𐌰) 𐌷𐌰𐌹𐌻𐍃 / 𐌷𐌰𐌹𐌻𐌰") (documentation . "\ Ancient Gothic language using the Gothic script is supported in this -language environment."))) +language environment.")) + '("Misc")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Coptic @@ -331,7 +336,8 @@ language environment."))) (sample-text . "Coptic (ⲘⲉⲧⲢⲉⲙ̀ⲛⲭⲏⲙⲓ) Ⲛⲟⲩϥⲣⲓ") (documentation . "\ Coptic language using the Coptic script is supported in this -language environment."))) +language environment.")) + '("Misc")) (provide 'misc-lang) diff --git a/lisp/language/philippine.el b/lisp/language/philippine.el index e52ad6912c..ce619bdaa1 100644 --- a/lisp/language/philippine.el +++ b/lisp/language/philippine.el @@ -35,7 +35,8 @@ (sample-text . "Tagalog (ᜊᜌ᜔ᜊᜌᜒᜈ᜔) ᜃᜓᜋᜓᜐ᜔ᜆ") (documentation . "\ Tagalog language using the Baybayin script is supported in -this language environment."))) +this language environment.")) + '("Philippine")) (set-language-info-alist "Hanunoo" '((charset unicode) @@ -44,7 +45,8 @@ this language environment."))) (input-method . "hanunoo") (sample-text . "Hanunoo (ᜱᜨᜳᜨᜳᜢ) ᜫᜬᜧ᜴ ᜣᜭᜯᜥ᜴ ᜰᜲᜭᜥ᜴") (documentation . "\ -Philippine Language Hanunoo is supported in this language environment."))) +Philippine Language Hanunoo is supported in this language environment.")) + '("Philippine")) (set-language-info-alist "Buhid" '((charset unicode) @@ -52,7 +54,8 @@ Philippine Language Hanunoo is supported in this language environment."))) (coding-priority utf-8) (input-method . "buhid") (documentation . "\ -Philippine Language Buhid is supported in this language environment."))) +Philippine Language Buhid is supported in this language environment.")) + '("Philippine")) (set-language-info-alist "Tagbanwa" '((charset unicode) @@ -61,7 +64,8 @@ Philippine Language Buhid is supported in this language environment."))) (input-method . "tagbanwa") (sample-text . "Tagbanwa (ᝦᝪᝯ) ᝫᝩᝬᝥ ᝣᝮᝧᝯ") (documentation . "\ -Philippine Languages Tagbanwa are supported in this language environment."))) +Philippine Languages Tagbanwa are supported in this language environment.")) + '("Philippine")) ;; Tagalog composition rules (let ((akshara "[\x1700-\x1711\x171F]") commit b5dc0513d53cf0e520c8e9c4ca197cb7ccdf2b23 Author: Lars Ingebrigtsen Date: Sun Oct 9 16:17:22 2022 +0200 Make Fsqlite_select error data better * src/sqlite.c (Fsqlite_select): Add more the more specific error text to the error data (bug#58363). diff --git a/src/sqlite.c b/src/sqlite.c index a46acf8523..ababa73b99 100644 --- a/src/sqlite.c +++ b/src/sqlite.c @@ -521,9 +521,8 @@ which means that we return a set object that can be queried with xsignal1 (Qerror, build_string ("VALUES must be a list or a vector")); sqlite3 *sdb = XSQLITE (db)->db; - Lisp_Object retval = Qnil; - const char *errmsg = NULL; - Lisp_Object encoded = encode_string (query); + Lisp_Object retval = Qnil, errmsg = Qnil, + encoded = encode_string (query); sqlite3_stmt *stmt = NULL; int ret = sqlite3_prepare_v2 (sdb, SSDATA (encoded), SBYTES (encoded), @@ -532,7 +531,12 @@ which means that we return a set object that can be queried with { if (stmt) sqlite3_finalize (stmt); - errmsg = sqlite3_errstr (ret); + errmsg = build_string (sqlite3_errstr (ret)); + /* More details about what went wrong. */ + const char *sql_error = sqlite3_errmsg (sdb); + if (sql_error) + errmsg = CALLN (Fformat, build_string ("%s (%s)"), + errmsg, build_string (sql_error)); goto exit; } @@ -543,7 +547,7 @@ which means that we return a set object that can be queried with if (err != NULL) { sqlite3_finalize (stmt); - errmsg = err; + errmsg = build_string (err); goto exit; } } @@ -567,8 +571,8 @@ which means that we return a set object that can be queried with sqlite3_finalize (stmt); exit: - if (errmsg != NULL) - xsignal1 (Qerror, build_string (errmsg)); + if (! NILP (errmsg)) + xsignal1 (Qerror, errmsg); return retval; } commit 0ce91ed8b478364a69502751d86bf5c5568a429c Author: Lars Ingebrigtsen Date: Sun Oct 9 02:19:14 2022 +0200 Clean up Fsqlite_select slightly * src/sqlite.c (Fsqlite_select): Clean up code slightly. diff --git a/src/sqlite.c b/src/sqlite.c index 9375b44da2..a46acf8523 100644 --- a/src/sqlite.c +++ b/src/sqlite.c @@ -557,7 +557,7 @@ which means that we return a set object that can be queried with /* Return the data directly. */ Lisp_Object data = Qnil; - while ((ret = sqlite3_step (stmt)) == SQLITE_ROW) + while (sqlite3_step (stmt) == SQLITE_ROW) data = Fcons (row_to_value (stmt), data); if (EQ (return_type, Qfull)) commit 22374f21229da6052a4d8f13916c79515dddf4f1 Author: Po Lu Date: Sun Oct 9 19:58:07 2022 +0800 Fix user time handling bug on GNOME Shell and Metacity * src/xfns.c (x_window): Avoid extraneous XChangeWindowAttributes. * src/xterm.c (x_display_set_last_user_time): New argument SET_PROPERTY. Do not change the user time property if it is not true. All callers changed. (handle_one_xevent): Avoid setting the user time property on LeaveNotify and XI_Leave events. diff --git a/src/xfns.c b/src/xfns.c index 8cea93c669..9112448899 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -4179,11 +4179,15 @@ x_window (struct frame *f) { /* XIM server might require some X events. */ unsigned long fevent = NoEventMask; - XGetICValues (FRAME_XIC (f), XNFilterEvents, &fevent, NULL); - attributes.event_mask |= fevent; - attribute_mask = CWEventMask; - XChangeWindowAttributes (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), - attribute_mask, &attributes); + + if (fevent) + { + XGetICValues (FRAME_XIC (f), XNFilterEvents, &fevent, NULL); + attributes.event_mask |= fevent; + attribute_mask = CWEventMask; + XChangeWindowAttributes (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), + attribute_mask, &attributes); + } } } #endif /* HAVE_X_I18N */ diff --git a/src/xterm.c b/src/xterm.c index aaf2e7988b..a374b13780 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -7601,11 +7601,25 @@ static void x_check_font (struct frame *, struct font *); user time. We don't sanitize timestamps from events sent by the X server itself because some Lisp might have set the user time to a ridiculously large value, and this way a more reasonable timestamp - can be obtained upon the next event. */ + can be obtained upon the next event. + + SET_PROPERTY specifies whether or not to change the user time + property for the active frame. The important thing is to not set + the last user time upon leave events; on Metacity and GNOME Shell, + mapping a new frame on top of the old frame potentially causes + LeaveNotify or XI_Leave to be sent to the old frame if it contains + the pointer, as the new frame will initially stack above the old + frame. If _NET_WM_USER_TIME is changed at that point, then GNOME + may get notified about the user time change on the old frame before + it tries to focus the new frame, which will make it consider the + new frame (whose user time property will not have been updated at + that point, due to not being focused) as having been mapped + out-of-order, and lower the new frame, which is typically not what + users want. */ static void x_display_set_last_user_time (struct x_display_info *dpyinfo, Time time, - bool send_event) + bool send_event, bool set_property) { #if defined HAVE_XSYNC && !defined USE_GTK && defined HAVE_CLOCK_GETTIME uint_fast64_t monotonic_time; @@ -7678,7 +7692,8 @@ x_display_set_last_user_time (struct x_display_info *dpyinfo, Time time, #ifndef USE_GTK /* Don't waste bandwidth if the time hasn't actually changed. */ - if (focus_frame && old_time != dpyinfo->last_user_time) + if (focus_frame && old_time != dpyinfo->last_user_time + && set_property) { time = dpyinfo->last_user_time; @@ -7719,6 +7734,7 @@ x_set_gtk_user_time (struct frame *f, Time time) itself. */ #ifndef USE_GTK + static void x_update_frame_user_time_window (struct frame *f) { @@ -7782,13 +7798,14 @@ x_update_frame_user_time_window (struct frame *f) } } } + #endif void x_set_last_user_time_from_lisp (struct x_display_info *dpyinfo, Time time) { - x_display_set_last_user_time (dpyinfo, time, true); + x_display_set_last_user_time (dpyinfo, time, true, true); } @@ -12761,7 +12778,7 @@ xi_focus_handle_for_device (struct x_display_info *dpyinfo, /* The last-focus-change time of the device changed, so update the frame's user time. */ x_display_set_last_user_time (dpyinfo, event->time, - event->send_event); + event->send_event, true); device->focus_frame = mentioned_frame; device->focus_frame_time = event->time; @@ -12771,7 +12788,7 @@ xi_focus_handle_for_device (struct x_display_info *dpyinfo, /* The last-focus-change time of the device changed, so update the frame's user time. */ x_display_set_last_user_time (dpyinfo, event->time, - event->send_event); + event->send_event, false); device->focus_frame = NULL; @@ -14153,7 +14170,8 @@ XTmouse_position (struct frame **fp, int insist, Lisp_Object *bar_window, < dpyinfo->last_mouse_movement_time)) x_display_set_last_user_time (dpyinfo, dpyinfo->last_mouse_movement_time, - dpyinfo->last_mouse_movement_time_send_event); + dpyinfo->last_mouse_movement_time_send_event, + true); if ((!f1 || FRAME_TOOLTIP_P (f1)) && (EQ (track_mouse, Qdropping) @@ -14769,7 +14787,8 @@ xg_scroll_callback (GtkRange *range, GtkScrollType scroll, dpyinfo = FRAME_DISPLAY_INFO (f); if (time != GDK_CURRENT_TIME) - x_display_set_last_user_time (dpyinfo, time, true); + x_display_set_last_user_time (dpyinfo, time, true, + true); switch (scroll) { @@ -18091,7 +18110,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, required for SetInputFocus to work correctly after taking the input focus. */ x_display_set_last_user_time (dpyinfo, event->xclient.data.l[1], - true); + true, true); goto done; } @@ -19079,7 +19098,8 @@ handle_one_xevent (struct x_display_info *dpyinfo, case KeyPress: x_display_set_last_user_time (dpyinfo, event->xkey.time, - event->xkey.send_event); + event->xkey.send_event, + true); ignore_next_mouse_click_timeout = 0; coding = Qlatin_1; @@ -19558,7 +19578,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, case EnterNotify: x_display_set_last_user_time (dpyinfo, event->xcrossing.time, - event->xcrossing.send_event); + event->xcrossing.send_event, true); #ifdef HAVE_XINPUT2 /* For whatever reason, the X server continues to deliver @@ -19681,7 +19701,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, case LeaveNotify: x_display_set_last_user_time (dpyinfo, event->xcrossing.time, - event->xcrossing.send_event); + event->xcrossing.send_event, false); #ifdef HAVE_XINPUT2 /* For whatever reason, the X server continues to deliver @@ -20496,7 +20516,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, { if (event->xbutton.type == ButtonPress) x_display_set_last_user_time (dpyinfo, event->xbutton.time, - event->xbutton.send_event); + event->xbutton.send_event, true); #ifdef HAVE_XWIDGETS struct xwidget_view *xvw = xwidget_view_from_window (event->xbutton.window); @@ -20548,7 +20568,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (event->type == ButtonPress) { x_display_set_last_user_time (dpyinfo, event->xbutton.time, - event->xbutton.send_event); + event->xbutton.send_event, true); dpyinfo->grabbed |= (1 << event->xbutton.button); dpyinfo->last_mouse_frame = f; @@ -21105,7 +21125,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, ev.send_event = enter->send_event; x_display_set_last_user_time (dpyinfo, enter->time, - enter->send_event); + enter->send_event, true); #ifdef USE_MOTIF use_copy = true; @@ -21291,7 +21311,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, #endif x_display_set_last_user_time (dpyinfo, leave->time, - leave->send_event); + leave->send_event, false); #ifdef HAVE_XWIDGETS { @@ -21566,7 +21586,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, state = xi_convert_event_state (xev); x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); if (found_valuator) xwidget_scroll (xv, xev->event_x, xev->event_y, @@ -21586,7 +21606,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (found_valuator) { x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); #if defined USE_GTK && !defined HAVE_GTK3 @@ -22077,7 +22097,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (xev->evtype == XI_ButtonPress) { x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); dpyinfo->grabbed |= (1 << xev->detail); dpyinfo->last_mouse_frame = f; @@ -22120,7 +22140,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (xev->flags & XIPointerEmulated) x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); #endif x_dnd_note_self_wheel (dpyinfo, x_dnd_last_seen_window, @@ -22356,7 +22376,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (xev->evtype == XI_ButtonPress) x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); source = xi_device_from_id (dpyinfo, xev->sourceid); device = xi_device_from_id (dpyinfo, xev->deviceid); @@ -22735,7 +22755,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, #endif x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); ignore_next_mouse_click_timeout = 0; f = x_any_window_to_frame (dpyinfo, xev->event); @@ -23374,7 +23394,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, device = xi_device_from_id (dpyinfo, xev->deviceid); source = xi_device_from_id (dpyinfo, xev->sourceid); x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); if (!device) goto XI_OTHER; @@ -23472,7 +23492,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, device = xi_device_from_id (dpyinfo, xev->deviceid); source = xi_device_from_id (dpyinfo, xev->sourceid); x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); if (!device) goto XI_OTHER; @@ -23519,7 +23539,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, device = xi_device_from_id (dpyinfo, xev->deviceid); source = xi_device_from_id (dpyinfo, xev->sourceid); x_display_set_last_user_time (dpyinfo, xev->time, - xev->send_event); + xev->send_event, true); if (!device) goto XI_OTHER; @@ -23560,7 +23580,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, device = xi_device_from_id (dpyinfo, pev->deviceid); source = xi_device_from_id (dpyinfo, pev->sourceid); x_display_set_last_user_time (dpyinfo, pev->time, - pev->send_event); + pev->send_event, true); if (!device) goto XI_OTHER;