>> @@ -367,7 +367,7 @@ DEFUN ("call-interactively", Fcall_interactively, Scall_interactively, 1, 3, 0, >> event with parameters. */ >> ptrdiff_t next_event; >> for (next_event = 0; next_event < key_count; next_event++) >> - if (EVENT_HAS_PARAMETERS (AREF (keys, next_event))) >> + if (inhibit_mouse_event_check || EVENT_HAS_PARAMETERS (AREF (keys, next_event))) >> break; >> >> /* Handle special starting chars `*' and `@'. Also `-'. */ >> @@ -618,6 +618,7 @@ DEFUN ("call-interactively", Fcall_interactively, Scall_interactively, 1, 3, 0, >> do >> next_event++; >> while (next_event < key_count >> + && ! inhibit_mouse_event_check >> && ! EVENT_HAS_PARAMETERS (AREF (keys, next_event))); >> >> break; > > Why check this condition inside the loops, rather than avoid entering > the loops when the condition is right, in the first place? I thought that checking the condition inside the loops would be less risky for the emacs-28 release branch. > And please add comments there explaining the meaning of the > inhibit_mouse_event_check test. This patch also adds comments, and removes one condition that is not unnecessary when event with parameters is not searched when inhibit_mouse_event_check is non-nil: