Improved Touch support
Needs ReviewPublic

Authored by steffenh on Mon, May 4, 4:30 PM.

Details

Reviewers
None
Group Reviewers
Dolphin
Summary

This is the continuation of @abalaji's work in the patch https://phabricator.kde.org/D12162.

with this patch dolphin support now following touch gestures:

  • Tap gesture to interact/open with directories, files and so on
  • TapAndHold and release gesture for access to the context menu (main window, panel folder, places and information)
  • TapAndHold and moving gesture for drag and drop action (main windows, panel folder and places)
  • pinch gesture for zoom in main window
  • kinetic scrolling (QScroller) for main window, panel folder, panel places, panel information, setting preview and service

FEATURE: 385066

Test Plan

Check usability of the gestures in in all the places mentioned above
Check sensitivity of the pinch gesture (too fast?)
Check QScroller overshot behavior (too much?, current standard values from Qt)

Diff Detail

Lint
Lint Skipped
Unit
Unit Tests Skipped
Build Status
Buildable 27045
Build 27063: arc lint + arc unit
steffenh created this revision.Mon, May 4, 4:30 PM
Restricted Application added a project: Dolphin. · View Herald TranscriptMon, May 4, 4:30 PM
Restricted Application added a subscriber: kfm-devel. · View Herald Transcript
steffenh requested review of this revision.Mon, May 4, 4:30 PM
ngraham added a subscriber: ngraham.Mon, May 4, 6:46 PM

This is great stuff. For the most part things work very well! I wonder if a tap-and-hold on an empty area of the view could drag a selection box. Another idea would be that when the view doesn't have a horizontal scrollbar, swiping left and right could navigate back and forwards.

What do you think?

hi @ngraham,

First, thanks for testing the patch.
The Idea with the TabAndHold over an empty area is good, I will try to make it work.

I see a problem with the on finger swipe gesture. In the compact view mode, we have most of the time a horizontal scrollbar (if we have much entry's in the directories). In the details view we have a scrollbar, if we have many columns and the width of the columns is difficult to change with touch. In the end the swipe will only good work in the icon view.

Perhaps is it better to use a two finger swipe, which should work independently of a horizontal scrollbar?

Two-finger gestures swipe/scroll aren't very common on touchscreens, but using them for back/forward would just be quick shortcuts so that's probably fine IMO.

meven retitled this revision from Improved Touch support for Dophin to Improved Touch support.Thu, May 7, 12:02 PM
meven edited the summary of this revision. (Show Details)
steffenh updated this revision to Diff 82297.Fri, May 8, 5:20 PM

added the following functions to the patch

  • TabAndHold and moving gesture over an empty spot can now start a rubber band selection
  • two fingers swipe gesture to left, right and up as shortcut to navigate back, forward and up
  • two finger tap gesture to toggle item selection, similar to Ctrl and left mouse click

Everything works for me, except two finger gestures

Looks like this needs a rebase.

Hi @niccolove,

thanks for testing this patch.

Everything works for me, except two finger gestures

can you please tell me which two finger gestures doesn't work for you.

two fingers swipe gesture to left, right and up as shortcut to navigate back, forward and up

This one

steffenh updated this revision to Diff 82941.Fri, May 15, 2:28 PM
  • rebase
  • add a TapAndHold indicator, to give the user a visual feedback for a successful TapAndHold gesture
  • tweak swipe gesture recogniser

Thanks, it applies now. Everything works great, except that the two-finger swipe gestures aren't recognized for me either.

I wonder if it would be better to use a single-finger swipe for navigation, and require a very fast motion, like a flick rather than a tap-and-drag, to differentiate it from a horizontal scroll in horizontally scrollable views. What do you think?

I'm seeing that the touch-and-hold indicator sometimes gets stuck:

Can confirm. Also, I'd make the tap and hold indicator a bit smaller, maybe half of the size it currently has :-)

Hi @ngraham

Thanks, it applies now. Everything works great, except that the two-finger swipe gestures aren't recognized for me either.

I wonder if it would be better to use a single-finger swipe for navigation, and require a very fast motion, like a flick rather than a tap-and-drag, to differentiate it from a horizontal scroll in horizontally scrollable views. What do you think?

I don't think it will work, because Qscroller uses a flick to do an autoscroll very quickly, so the problem is to be distinguished: the user wants to scroll quickly or wants to swipe.

Hi @niccolove,

Can confirm. Also, I'd make the tap and hold indicator a bit smaller, maybe half of the size it currently has :-)

I want to see the indicator under my finger, at the current size I can almost see it (maybe my fingers are too thick)

Can confirm. Also, I'd make the tap and hold indicator a bit smaller, maybe half of the size it currently has :-)

I want to see the indicator under my finger, at the current size I can almost see it (maybe my fingers are too thick)

Fair enough - it still feels a bit unnatural to me, would it maybe be possible to make it appear with a quick animation? if not, nevermind

steffenh updated this revision to Diff 83089.Wed, May 20, 1:35 PM
  • fix the stuck TapAndHold indicator
  • add a small animation to TapAndHold indicator
  • set minimal speed, lower for swipe gesture

In terms of interaction, this feels great to me! I wonder, do you think you could move the patch to https://invent.kde.org/system/dolphin/-/merge_requests/? We've recently migrated to GitLab and are trying to stop using Phabricator.

Hi @ngraham

In terms of interaction, this feels great to me! I wonder, do you think you could move the patch to https://invent.kde.org/system/dolphin/-/merge_requests/? We've recently migrated to GitLab and are trying to stop using Phabricator.

I hope I have it do is right.
https://invent.kde.org/system/dolphin/-/merge_requests/7

Great job, that's perfect! You can close this now.