aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2026-01-01 10:23:53 +0800
committerPo Lu2026-01-01 10:24:49 +0800
commitef12da4ba1dedc24838f3e92b35e67343a59c355 (patch)
treead40a768362f67909df827b583a6f2af86322bd1 /src
parent9785e904f10e5facc74576dd0b3e59de5eadaa9b (diff)
downloademacs-ef12da4ba1dedc24838f3e92b35e67343a59c355.tar.gz
emacs-ef12da4ba1dedc24838f3e92b35e67343a59c355.zip
Don't permit special configuration events to trigger `throw-on-input'
* src/keyboard.c (init_while_no_input_ignore_events): Ignore Qmonitors_changed and Qtoolkit_theme_changed events. (is_ignored_event): Assign symbols to {MONITOR_CHANGED,TOOLKIT_THEME_CHANGED}_EVENT. (syms_of_keyboard) <Qmonitors_changed> <Qtoolkit_theme_changed>: New symbols. (bug#80022)
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c50
1 files changed, 38 insertions, 12 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 776b87bde73..5e57c79b5a9 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -13280,7 +13280,8 @@ init_while_no_input_ignore_events (void)
13280 Lisp_Object events = list (Qselect_window, Qhelp_echo, Qmove_frame, 13280 Lisp_Object events = list (Qselect_window, Qhelp_echo, Qmove_frame,
13281 Qiconify_frame, Qmake_frame_visible, 13281 Qiconify_frame, Qmake_frame_visible,
13282 Qfocus_in, Qfocus_out, Qconfig_changed_event, 13282 Qfocus_in, Qfocus_out, Qconfig_changed_event,
13283 Qselection_request); 13283 Qselection_request, Qmonitors_changed,
13284 Qtoolkit_theme_changed);
13284 13285
13285#ifdef HAVE_DBUS 13286#ifdef HAVE_DBUS
13286 events = Fcons (Qdbus_event, events); 13287 events = Fcons (Qdbus_event, events);
@@ -13299,24 +13300,47 @@ init_while_no_input_ignore_events (void)
13299static bool 13300static bool
13300is_ignored_event (union buffered_input_event *event) 13301is_ignored_event (union buffered_input_event *event)
13301{ 13302{
13302 Lisp_Object ignore_event; 13303 Lisp_Object ignore_event = Qnil;
13303 13304
13304 switch (event->kind) 13305 switch (event->kind)
13305 { 13306 {
13306 case FOCUS_IN_EVENT: ignore_event = Qfocus_in; break; 13307 case FOCUS_IN_EVENT:
13307 case FOCUS_OUT_EVENT: ignore_event = Qfocus_out; break; 13308 ignore_event = Qfocus_in;
13308 case HELP_EVENT: ignore_event = Qhelp_echo; break; 13309 break;
13309 case ICONIFY_EVENT: ignore_event = Qiconify_frame; break; 13310 case FOCUS_OUT_EVENT:
13310 case DEICONIFY_EVENT: ignore_event = Qmake_frame_visible; break; 13311 ignore_event = Qfocus_out;
13311 case SELECTION_REQUEST_EVENT: ignore_event = Qselection_request; break; 13312 break;
13313 case HELP_EVENT:
13314 ignore_event = Qhelp_echo;
13315 break;
13316 case ICONIFY_EVENT:
13317 ignore_event = Qiconify_frame;
13318 break;
13319 case DEICONIFY_EVENT:
13320 ignore_event = Qmake_frame_visible;
13321 break;
13322 case SELECTION_REQUEST_EVENT:
13323 ignore_event = Qselection_request;
13324 break;
13312#ifdef USE_FILE_NOTIFY 13325#ifdef USE_FILE_NOTIFY
13313 case FILE_NOTIFY_EVENT: ignore_event = Qfile_notify; break; 13326 case FILE_NOTIFY_EVENT:
13327 ignore_event = Qfile_notify;
13328 break;
13314#endif 13329#endif
13315#ifdef HAVE_DBUS 13330#ifdef HAVE_DBUS
13316 case DBUS_EVENT: ignore_event = Qdbus_event; break; 13331 case DBUS_EVENT:
13332 ignore_event = Qdbus_event;
13333 break;
13317#endif 13334#endif
13318 case SLEEP_EVENT: ignore_event = Qsleep_event; break; 13335 case SLEEP_EVENT:
13319 default: ignore_event = Qnil; break; 13336 ignore_event = Qsleep_event;
13337 break;
13338 case MONITORS_CHANGED_EVENT:
13339 ignore_event = Qmonitors_changed;
13340 break;
13341 case TOOLKIT_THEME_CHANGED_EVENT:
13342 ignore_event = Qtoolkit_theme_changed;
13343 break;
13320 } 13344 }
13321 13345
13322 return !NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events)); 13346 return !NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events));
@@ -13422,6 +13446,8 @@ syms_of_keyboard (void)
13422 13446
13423 DEFSYM (Qtouch_end, "touch-end"); 13447 DEFSYM (Qtouch_end, "touch-end");
13424 DEFSYM (Qsleep_event, "sleep-event"); 13448 DEFSYM (Qsleep_event, "sleep-event");
13449 DEFSYM (Qmonitors_changed, "monitors-changed");
13450 DEFSYM (Qtoolkit_theme_changed, "toolkit-theme-changed");
13425 13451
13426 /* Menu and tool bar item parts. */ 13452 /* Menu and tool bar item parts. */
13427 DEFSYM (QCenable, ":enable"); 13453 DEFSYM (QCenable, ":enable");