Subject: bug#50067: Context menus

From: Eli Zaretskii <[email-masked]>
Date: Thu, 25 Nov 2021 10:38:44 +0200

> From: Juri Linkov <[email-masked]>
> Date: Thu, 25 Nov 2021 09:50:40 +0200
> 
> --- a/src/callint.c
> +++ b/src/callint.c
> @@ -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?

And please add comments there explaining the meaning of the
inhibit_mouse_event_check test.

Thanks.