Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Apr 2019 20:57:50 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 237287] [patch] moused(8) ignores button release events in virtual scroll mode
Message-ID:  <bug-237287-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D237287

            Bug ID: 237287
           Summary: [patch] moused(8) ignores button release events in
                    virtual scroll mode
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: bugs@FreeBSD.org
          Reporter: bojan_petrovic@fastmail.fm

Created attachment 203676
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D203676&action=
=3Dedit
moused.c.diff

Sometimes when I double-click a word in an X terminal to select it and then
immediately click the middle button to paste it, the terminal is left in dr=
ag
selection mode as if the left button was not released on the second click.

This behavior can be reproduced by the following sequence when running "mou=
sed"
with "-V" option:

1. press and hold left button
2. press and hold middle button
3. release left button
4. release middle button

The X terminal will be in drag selection mode.

The debug output (grepped for "moused: button.*count") for the sequence of
events above when I run moused with virtual scrolling OFF is:

moused: button 1  count 1
moused: button 2  count 1
moused: button 1  count 0
moused: button 2  count 0

The debug output with virtual scrolling ON:

moused: button 1  count 1
moused: button 2  count 1
moused: button 2  count 1
moused: button 2  count 0

In virtual scrolling case the button 1 count never drops to 0.

In current code, the SCROLL_PREPARE mode can be entered when multiple butto=
ns
are held pressed, and then all of them released except for the middle butto=
n:

  if (action0.button =3D=3D MOUSE_BUTTON2DOWN)

In this mode button events are not emmited:

  /* Defer clicks until we aren't VirtualScroll'ing. */
  if (scroll_state =3D=3D SCROLL_NOTSCROLLING)
      r_click(&action2);


Because of this, the left button release is not registered.

I've attached a patch which fixes this issue for me. It allows the virtual
scroll mode to be entered only if no other button was held before pressing
middle button.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-237287-227>