HiDPI and drag thresholds

A forum for research and development of the user interface of FreeCAD
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
regularfry
Posts: 48
Joined: Wed Feb 10, 2021 4:35 pm

HiDPI and drag thresholds

Post by regularfry »

Hi folks,

Just wanted to check that I've not missed something here.

I'm on a 3:1 HiDPI display. What I've observed is that I have a far harder time selecting elements in the Sketcher than I see people have in YouTube tutorials. I click and click and click and things just don't get selected. What I believe is happening is that I'm incapable of clicking without subtly moving the mouse between mouse-down and mouse-up when I select an element, and that means my action registers as a drag, not as a click. The net result is that the element I'm trying to select remains unselected, so I have to try again. Several times, usually. Because I'm on a high-ratio display, I often can't visually see the mouse motion that I think is registering, but the behaviour is the same when I can see some movement.

I've dug a little into the code, and I can see that Gesture and MayaGesture both call QApplication::startDragDistance() (https://github.com/FreeCAD/FreeCAD/blob ... le.cpp#L92) but the other interaction styles don't. From that, my assumption would be that those two orbit styles would work better, and subjectively that does seem to be the case. If I switch to MayaGesture, selecting Sketcher elements does feel less frustrating, but I could easily be placebo'ing myself.

Now, I can't see any global preferences for drag thresholds anywhere. It might be that I've just not found them. So, two questions: first, am I right in my assumption that if a selected orbit style does not use QApplication::startDragDistance(), then the implicit drag threshold is zero, and any mouse movement bigger than a pixel triggers a drag? And second, if that is the case, is there a change that can be made globally to introduce a drag threshold configuration?
chrisb
Veteran
Posts: 54150
Joined: Tue Mar 17, 2015 9:14 am

Re: HiDPI and drag thresholds

Post by chrisb »

No problems here on a Retina 3072x1920 display.

OS: macOS 10.16
Word size of FreeCAD: 64-bit
Version: 0.20.25429 (Git)
Build type: Release
Branch: master
Hash: acce57a25d82b0408fa07b9452ed31c8a06c7a1b
Python version: 3.9.6
Qt version: 5.12.9
Coin version: 4.0.0
OCC version: 7.5.2
Locale: C/Default (C)

(Not sure if this is the right forum.)
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
regularfry
Posts: 48
Joined: Wed Feb 10, 2021 4:35 pm

Re: HiDPI and drag thresholds

Post by regularfry »

Which input style do you use, and what pointing device?

Oh, should probably mention: I'm on Windows 10.
chrisb
Veteran
Posts: 54150
Joined: Tue Mar 17, 2015 9:14 am

Re: HiDPI and drag thresholds

Post by chrisb »

regularfry wrote: Sun Aug 22, 2021 12:10 pm Which input style do you use, and what pointing device?
Input device: touch pad; Mouse model: Gesture.
Oh, should probably mention: I'm on Windows 10.
You should show your full FreeCAD infos.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
regularfry
Posts: 48
Joined: Wed Feb 10, 2021 4:35 pm

Re: HiDPI and drag thresholds

Post by regularfry »

OS: Windows 10 Version 2009
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24291 (Git)
Build type: Release
Branch: releases/FreeCAD-0-19
Hash: 7b5e18a0759de778b74d3a5c17eba9cb815035ac
Python version: 3.8.6+
Qt version: 5.15.2
Coin version: 4.0.1
OCC version: 7.5.0
Locale: English/United Kingdom (en_GB)
regularfry
Posts: 48
Joined: Wed Feb 10, 2021 4:35 pm

Re: HiDPI and drag thresholds

Post by regularfry »

chrisb wrote: Sun Aug 22, 2021 12:21 pm
regularfry wrote: Sun Aug 22, 2021 12:10 pm Which input style do you use, and what pointing device?
Input device: touch pad; Mouse model: Gesture.
Right, that makes sense then: Gesture is one that calls startDragDistance. If you try a mouse, and pick (for instance) Blender style, do you notice any difference?
chrisb
Veteran
Posts: 54150
Joined: Tue Mar 17, 2015 9:14 am

Re: HiDPI and drag thresholds

Post by chrisb »

regularfry wrote: Sun Aug 22, 2021 1:46 pm If you try a mouse, and pick (for instance) Blender style, do you notice any difference?
No difference, it is as fast as before.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
regularfry
Posts: 48
Joined: Wed Feb 10, 2021 4:35 pm

Re: HiDPI and drag thresholds

Post by regularfry »

Interesting choice of words: my problem isn't speed, it's reliability.

I clearly need to dig into this a little more to prove out what I'm seeing, but it's absolutely consistent with the fact that MayaGestureNavigationStyle.cpp is processing mouseMoveThreshold and BlenderNavigationStyle.cpp has no equivalent. That implies there's zero drag threshold on any of the navigation styles which don't handle it explicitly, so less than perfect hardware (or less than perfect fine motor control, for that matter) is likely to be problematic.
User avatar
chennes
Veteran
Posts: 3904
Joined: Fri Dec 23, 2016 3:38 pm
Location: Norman, OK, USA
Contact:

Re: HiDPI and drag thresholds

Post by chennes »

That's certainly how the code reads to me: the MayaGestureNavigation, for example, has a huge amount of code that works to separate out the various possible mouse events, and to re-synthesize clicks if it accidentally ate them. I'd say that this problem is probably fixable, but it won't be trivial to do, and is going to require significant testing.
Chris Hennes
Pioneer Library System
GitHub profile, LinkedIn profile, chrishennes.com
Post Reply