Make scrolling speed resolution independent

Bug #1348557 reported by Andrea Cimitan
48
This bug affects 10 people
Affects Status Importance Assigned to Milestone
qtbase-opensource-src (Ubuntu)
Confirmed
Undecided
Unassigned
qtdeclarative-opensource-src (Ubuntu)
Confirmed
Undecided
Unassigned
qtubuntu (Ubuntu)
Invalid
High
Unassigned
ubuntu-ui-toolkit (Ubuntu)
Confirmed
High
Zsombor Egri
unity8 (Ubuntu)
Won't Fix
High
Unassigned
unity8 (Ubuntu RTM)
Won't Fix
High
Unassigned

Bug Description

Following https://bugreports.qt-project.org/browse/QTBUG-35608 the default speed of scrollable components (components inheriting from flickable basically) is not resolution independent. The result is that scrolling speed on our high dpi touch screens is slow.

We could workaround this in the SDK until the bug is fixed upstream (I bet it won't happen in time for our releases), by simply adding components named as Flickable, Listview, Gridview etc etc in the Ubuntu.Components, where each of them sets the speed to be resolution independent following our GU guidelines

Related branches

Revision history for this message
Andrea Cimitan (cimi) wrote :

Default velocity in qt was 2500, probably targeted around 96PPI... we can find something more reasonable with GU

Revision history for this message
Florian Boucault (fboucault) wrote :

Fix it properly in qtubuntu instead

Changed in ubuntu-ui-toolkit:
status: New → Invalid
Changed in qtubuntu:
status: New → Confirmed
importance: Undecided → High
Revision history for this message
Florian Boucault (fboucault) wrote :

It looks like I was wrong: qtubuntu cannot set those as they (QML_FLICK_DEFAULTMAXVELOCITY, QML_FLICK_DEFAULTDECELERATION) are defined in qquickflickablebehavior_p.h that says: "Platform specific flickable mechanics are defined either here, or in mkspec files."

Changed in ubuntu-ui-toolkit:
status: Invalid → Confirmed
Changed in qtubuntu:
status: Confirmed → Invalid
Changed in ubuntu-ui-toolkit:
importance: Undecided → High
Revision history for this message
Florian Boucault (fboucault) wrote :

See if qmlRegisterExtendedType could be used on QQuickFlickable as it is done for QQuickImageBase so that no new class needs to be introduced.

Revision history for this message
Andrea Cimitan (cimi) wrote :

This might work for Flickable, but won't for listview and gridview...

Revision history for this message
Florian Boucault (fboucault) wrote :

And why not?
Actually you should only need to do it for Flickable and it should automatically work for both ListView and GridView that inherit from Flickable.

Revision history for this message
Tim Peeters (tpeeters) wrote :

I proposed a somewhat related component in this bug: https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1349426

If we had the proposed component and it would be used in all Ubuntu apps instead of using Flickables directly, that would make it easy for us to fix the flicking speed. Obviously that is not the case now, but I link the bug here anyway so you can comment on the ideas there.

Revision history for this message
Andrea Cimitan (cimi) wrote :

It won't work for Listview and gridview because they are inheriting upstream qt libraries and not our ubuntu components

Revision history for this message
Andrea Cimitan (cimi) wrote :

Having FlickablePage or ListViewPage won't fix this bug either, since all apps and code using Flickable won't have the resolution fix

Revision history for this message
Florian Boucault (fboucault) wrote :

Cimi, you did not try qmlRegisterExtendedType and you don't know how it works so saying it won't work on ListView and GridView is a little premature.

Revision history for this message
Florian Boucault (fboucault) wrote :

The qmlRegisterExtendedType does not work because in order for the extension QObject to be instantiated, an additional property has to be defined and also accessed in the client code.
Another technique was therefore investigated: overriding QtQuick's ListView/GridView/Flickable by using the same names. See linked merge request.

Revision history for this message
Jouni Helminen (jounihelminen) wrote :

could we please look into getting this fixed? would be a big win for many places

Changed in ubuntu-ui-toolkit:
assignee: nobody → Zsombor Egri (zsombi)
assignee: Zsombor Egri (zsombi) → Tim Peeters (tpeeters)
Changed in ubuntu-ux:
status: New → Triaged
importance: Undecided → High
assignee: nobody → Giorgio Venturi (giorgio-venturi)
no longer affects: ubuntu-ux
tags: added: rtm14
Tim Peeters (tpeeters)
Changed in ubuntu-ui-toolkit:
assignee: Tim Peeters (tpeeters) → Zsombor Egri (zsombi)
Revision history for this message
Zsombor Egri (zsombi) wrote :

Florian, actually the qmlRegisterExtendedType works on Flickable, you don't need to provide any additional property. See Image extension you provided for scaling images in toolkit :)

The problem is, that even if you extend Flickable, it won't get to ListView or GridView. using the parameterless qmlRegisterExtendedType function nothing will work, and using the (uri, major, minot, qmlName) works only if qmlName is set to Flickable, doesn't work if set to QQuickFlickable. More, you can extend only types which are exported from QtQuick privates, i.e. we cannot extend QQuickListView or the intermediate QQuickItemView class, neither of those have export declspecs.

I'll dig in further, maybe I find a better approach for the problem. Otherwise we have to provide separate UbuntuXXXX types for all. We have UbuntuListView, so we'd need UbuntuFlickable and UbuntuGridView. Also UbuntuPathView would be needed.

Zoltan Balogh (bzoltan)
Changed in ubuntu-ui-toolkit:
milestone: none → 11.07
Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

Adding more target packages. Zsombor mentioned there are possibly relevant upstream changes brewing to qtbase and qtdeclarative, although they have not been accepted by upstream yet.

Revision history for this message
Zsombor Egri (zsombi) wrote :

Checking the current changes added to the upstream bug I have doubts that those actually fix the issue we have. The fix smells like it only configures the threshold the flick should start, but doesn't configure the velocity at all.

tags: removed: rtm14
tags: added: ota-future rtm14
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in qtbase-opensource-src (Ubuntu):
status: New → Confirmed
Changed in qtdeclarative-opensource-src (Ubuntu):
status: New → Confirmed
Changed in qtbase-opensource-src (Ubuntu):
status: Confirmed → Incomplete
Changed in qtdeclarative-opensource-src (Ubuntu):
status: Confirmed → Incomplete
Tim Peeters (tpeeters)
tags: added: design-sync
Andrea Cimitan (cimi)
Changed in unity8 (Ubuntu):
assignee: nobody → Andrea Cimitan (cimi)
Andrea Cimitan (cimi)
Changed in unity8 (Ubuntu):
status: New → In Progress
importance: Undecided → High
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package unity8 - 8.00+14.10.20141013.2-0ubuntu1

---------------
unity8 (8.00+14.10.20141013.2-0ubuntu1) utopic; urgency=low

  [ Michael Terry ]
  * Don't show initial lockscreen during the edge demo. The user just
    set up their phone with a password, it's pointless to ask them
    again. (LP: #1358283)
  * Distinguish between incoming calls and other dialer-app opens. (LP:
    #1378218) (LP: #1378218)

  [ Andrea Cimitan ]
  * Fix flickable speed to be resolution independent, by subclassing
    components (LP: #1348557)

  [ Michał Sawicz ]
  * Fix the ShellWithPin test and some functionality.

  [ Albert Astals ]
  * Move Base.qml to DashCategoryBase
  * Fix first item positioning when m_clipItem->y() is not 0 (LP:
    #1251597)
  * Fix some small qml warnings

  [ Daniel d'Andrada ]
  * Add touch ownership logic on top of qt input handling
 -- Ubuntu daily release <email address hidden> Mon, 13 Oct 2014 15:43:03 +0000

Changed in unity8 (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Alexander Sack (asac) wrote :

general comment: please try to submit bugs for product team landing request with many incomplete tasks etc. in future.

Michał Sawicz (saviq)
Changed in unity8 (Ubuntu RTM):
status: New → In Progress
importance: Undecided → High
assignee: nobody → Andrea Cimitan (cimi)
Zsombor Egri (zsombi)
Changed in qtbase-opensource-src (Ubuntu):
status: Incomplete → Confirmed
Changed in qtdeclarative-opensource-src (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Michał Sawicz (saviq) wrote :

We decided to pull this out of unity8 and wait for proper upstream fix.

Changed in unity8 (Ubuntu RTM):
status: In Progress → Won't Fix
assignee: Andrea Cimitan (cimi) → nobody
Changed in unity8 (Ubuntu):
status: Fix Released → Won't Fix
assignee: Andrea Cimitan (cimi) → nobody
Zoltan Balogh (bzoltan)
Changed in ubuntu-ui-toolkit (Ubuntu):
assignee: nobody → Zsombor Egri (zsombi)
importance: Undecided → High
status: New → Confirmed
Zoltan Balogh (bzoltan)
no longer affects: ubuntu-ui-toolkit
Michał Sawicz (saviq)
affects: qtubuntu → qtubuntu (Ubuntu)
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.