Subject: Re: bug#55970: 29.0.50; Emacs crashes when dragging the scroll bar with "--with-pgtk" and "--without-toolkit-scroll-bars" configure flags

From: Eli Zaretskii <[email-masked]>
Date: Wed, 15 Jun 2022 15:25:27 +0300

> From: Po Lu <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Wed, 15 Jun 2022 11:29:23 +0800
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > OK, but please explain how come the code in pgtk_send_scroll_bar_event
> > leaves the modifiers unset, and that is still OK, notwithstanding the
> > code in keyboard.c that expects either up or down modifier for any
> > mouse click event?  Isn't that a bug regardless?
> 
> The mouse click code that expects an up or down modifier is only used
> for scroll bar events when USE_TOOLKIT_SCROLL_BARS isn't defined.  The
> code actually used with toolkit scroll bars starts at line 6359 of
> keyboard.c.

Then how come the code which aborted got executed contrary to what you
say?  And given that it did, would it do any harm to install the fix I
proposed?

More importantly, does it really make sense to "fix" events in
keyboard.c, rather than generate them correctly in low-level
toolkit-specific code to begin with?  I mean this part:

	/* Always treat scroll bar events as clicks.  */
	event->modifiers |= click_modifier;
	event->modifiers &= ~up_modifier;

Why do we override the modifiers of the event, and why in keyboard.c
of all places?  Can we do this cleaner, or at least in
toolkit-specific code?