Place Wire sometimes does not work when too fast with the mouse

Bug #1753141 reported by Thomas Pointhuber
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
KiCad
Fix Committed
Wishlist
Seth Hillbrand

Bug Description

# HowTo Reproduce

1.) press left mouse button on some pin you want to wire
2.) while pressed move some small amount out of the circle
3.) release of the mouse button does not trigger "place wire" action

Sounds like expected behaviour, but when doing fast layouting it's possible to trigger this edge-case quite often.

# Expected Behaviour

More robust mouse handling for "place wire" action

# System Information

Application: kicad
Version: (4.0.0-rc2-4159-ga83669ab1-dirty), debug build
Libraries:
    wxWidgets 3.1.1
    libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0
Platform: Linux 4.15.6-1-ARCH x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.1.1 (wchar_t,wx containers) GTK+ 2.24
    Boost: 1.66.0
    Curl: 7.58.0
    Compiler: Clang 5.0.1 with C++ ABI 1002
Build settings:
    USE_WX_GRAPHICS_CONTEXT=OFF
    USE_WX_OVERLAY=OFF
    KICAD_SCRIPTING=ON
    KICAD_SCRIPTING_MODULES=ON
    KICAD_SCRIPTING_WXPYTHON=OFF
    KICAD_SCRIPTING_ACTION_MENU=ON
    BUILD_GITHUB_PLUGIN=ON
    KICAD_USE_OCE=ON
    KICAD_SPICE=ON

Tags: eeschema
Revision history for this message
Seth Hillbrand (sethh) wrote :

I see two options for this.

1) Have the limit at which we change from click to drag be a preference that can be set.
2) Don't allow the drag-selection action to activate from the wire tool (and maybe others)

Do people have a preference for addressing this? I agree that it can be annoying when trying to wire quickly.

Revision history for this message
Jeff Young (jeyjey) wrote : Re: [Bug 1753141] Re: Place Wire sometimes does not work when to fast with the mouse

It’s pretty easy to get behind (2). The Selection tool is called the selection tool because it does selections. The Wire tool, on the other hand, is not called the wire tool because it does selections. :)

> On 5 Mar 2018, at 05:25, Seth Hillbrand <email address hidden> wrote:
>
> I see two options for this.
>
> 1) Have the limit at which we change from click to drag be a preference that can be set.
> 2) Don't allow the drag-selection action to activate from the wire tool (and maybe others)
>
> Do people have a preference for addressing this? I agree that it can be
> annoying when trying to wire quickly.
>
> --
> You received this bug notification because you are a member of KiCad Bug
> Squad, which is subscribed to KiCad.
> https://bugs.launchpad.net/bugs/1753141
>
> Title:
> Place Wire sometimes does not work when to fast with the mouse
>
> Status in KiCad:
> New
>
> Bug description:
> # HowTo Reproduce
>
> 1.) press left mouse button on some pin you want to wire
> 2.) while pressed move some small amount out of the circle
> 3.) release of the mouse button does not trigger "place wire" action
>
> Sounds like expected behaviour, but when doing fast layouting it's
> possible to trigger this edge-case quite often.
>
>
> # Expected Behaviour
>
> More robust mouse handling for "place wire" action
>
>
> # System Information
>
> Application: kicad
> Version: (4.0.0-rc2-4159-ga83669ab1-dirty), debug build
> Libraries:
> wxWidgets 3.1.1
> libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0
> Platform: Linux 4.15.6-1-ARCH x86_64, 64 bit, Little endian, wxGTK
> Build Info:
> wxWidgets: 3.1.1 (wchar_t,wx containers) GTK+ 2.24
> Boost: 1.66.0
> Curl: 7.58.0
> Compiler: Clang 5.0.1 with C++ ABI 1002
> Build settings:
> USE_WX_GRAPHICS_CONTEXT=OFF
> USE_WX_OVERLAY=OFF
> KICAD_SCRIPTING=ON
> KICAD_SCRIPTING_MODULES=ON
> KICAD_SCRIPTING_WXPYTHON=OFF
> KICAD_SCRIPTING_ACTION_MENU=ON
> BUILD_GITHUB_PLUGIN=ON
> KICAD_USE_OCE=ON
> KICAD_SPICE=ON
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/kicad/+bug/1753141/+subscriptions

Revision history for this message
Wayne Stambaugh (stambaughw) wrote :

I don't like #2 at all. One thing that I have always thought KiCad did
better than any other EDA tool is not limiting each tool to doing only
one thing at a time. I hate having to constantly change tools to get
work done. I would rather fix our drag heuristics so you don't get drag
event when single clicking too quickly. At some point, no amount of
heuristics is going to solve this issue and the user is just going to
have to be more careful.

On 3/5/2018 5:36 AM, Jeff Young wrote:
> It’s pretty easy to get behind (2). The Selection tool is called the
> selection tool because it does selections. The Wire tool, on the other
> hand, is not called the wire tool because it does selections. :)
>
>> On 5 Mar 2018, at 05:25, Seth Hillbrand <email address hidden> wrote:
>>
>> I see two options for this.
>>
>> 1) Have the limit at which we change from click to drag be a preference that can be set.
>> 2) Don't allow the drag-selection action to activate from the wire tool (and maybe others)
>>
>> Do people have a preference for addressing this? I agree that it can be
>> annoying when trying to wire quickly.
>>
>> --
>> You received this bug notification because you are a member of KiCad Bug
>> Squad, which is subscribed to KiCad.
>> https://bugs.launchpad.net/bugs/1753141
>>
>> Title:
>> Place Wire sometimes does not work when to fast with the mouse
>>
>> Status in KiCad:
>> New
>>
>> Bug description:
>> # HowTo Reproduce
>>
>> 1.) press left mouse button on some pin you want to wire
>> 2.) while pressed move some small amount out of the circle
>> 3.) release of the mouse button does not trigger "place wire" action
>>
>> Sounds like expected behaviour, but when doing fast layouting it's
>> possible to trigger this edge-case quite often.
>>
>>
>> # Expected Behaviour
>>
>> More robust mouse handling for "place wire" action
>>
>>
>> # System Information
>>
>> Application: kicad
>> Version: (4.0.0-rc2-4159-ga83669ab1-dirty), debug build
>> Libraries:
>> wxWidgets 3.1.1
>> libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0
>> Platform: Linux 4.15.6-1-ARCH x86_64, 64 bit, Little endian, wxGTK
>> Build Info:
>> wxWidgets: 3.1.1 (wchar_t,wx containers) GTK+ 2.24
>> Boost: 1.66.0
>> Curl: 7.58.0
>> Compiler: Clang 5.0.1 with C++ ABI 1002
>> Build settings:
>> USE_WX_GRAPHICS_CONTEXT=OFF
>> USE_WX_OVERLAY=OFF
>> KICAD_SCRIPTING=ON
>> KICAD_SCRIPTING_MODULES=ON
>> KICAD_SCRIPTING_WXPYTHON=OFF
>> KICAD_SCRIPTING_ACTION_MENU=ON
>> BUILD_GITHUB_PLUGIN=ON
>> KICAD_USE_OCE=ON
>> KICAD_SPICE=ON
>>
>> To manage notifications about this bug go to:
>> https://bugs.launchpad.net/kicad/+bug/1753141/+subscriptions
>

Revision history for this message
Seth Hillbrand (sethh) wrote : Re: Place Wire sometimes does not work when to fast with the mouse

OK. Will put this on the wishlist then after bugs

Changed in kicad:
assignee: nobody → Seth Hillbrand (sethh)
importance: Undecided → Wishlist
status: New → Triaged
Revision history for this message
Thomas Pointhuber (pointhi) wrote :

this reproduction steps are pretty artificial. When thinking about the issue itself, selection normally means holding the mouse button quite some time. I assume the position for the start of the wire is taken from the "mouse up" event. My proposal would be something like: when the "mouse down" event followed by the "mouse up" event happens inside a time-delta of 100ms or so, the position from "mouse down" is used for the tool action.

Revision history for this message
jean-pierre charras (jp-charras) wrote :

@Seth
Option 1): AFAIK, the filtering is already in place.
Starting a block command is made only if the mouse drag distance is enough (a few pixels).
(See if it is good for HDPI)

Revision history for this message
Seth Hillbrand (sethh) wrote :

@pointhi-

Maybe I misunderstood. Are you saying that a wire is placed but in the wrong location?

I had assumed that you were moving the mouse sufficiently that the action was converted to a drag-selection.

Revision history for this message
Thomas Pointhuber (pointhi) wrote :

It's hard to say if the mouse moved sufficiently to a drag-selection, but it's possible. My thought was that the "mouse up" event happens in my case outside of the circle drawn around the pin.

I think using time as additional variable beside drag distance could be a good indicator what tool to use.

Note: I don't have a HDPI monitor in use

Revision history for this message
Seth Hillbrand (sethh) wrote :

@pointhi-

Did you get a wire started but in the wrong place? Or no wire at all?

Revision history for this message
Thomas Pointhuber (pointhi) wrote :

no wire at all

Revision history for this message
Seth Hillbrand (sethh) wrote :

@JP- You are right, the current filter (hard coded) takes a number of mouse events before deciding that there is a drag. Playing with this, it seems that I can trigger a drag more easily at high resolution due to more mouse events.

I'm thinking along the lines of the attached patch that prevents a drag from starting before you've moved out of the current grid location.

Revision history for this message
Nick Østergaard (nickoe) wrote :

I have never seen the current behavior as a problem. Are you using some strange input device since it is troublesome to keep the cursor static while clicking?

Revision history for this message
Thomas Pointhuber (pointhi) wrote :
Revision history for this message
jean-pierre charras (jp-charras) wrote :

Honestly, after seeing this video, I do share the Wayne's opinion:
"the user is just going to have to be more careful"

Jeff Young (jeyjey)
summary: - Place Wire sometimes does not work when to fast with the mouse
+ Place Wire sometimes does not work when too fast with the mouse
Revision history for this message
Jeff Young (jeyjey) wrote :

The modern toolset doesn't support drag-selection from other tools. We'll see how annoying folks find it, but for now this bug no longer exists.

Changed in kicad:
status: Triaged → Fix Committed
milestone: none → 6.0.0-rc1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.