Flickable's widthRatio and heightRatio are wrong when the content is smaller than the view and has topMargin/leftMargin

Bug #1588238 reported by Andrea Bernabei
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Medium
Zoltan Balogh
qtdeclarative-opensource-src (Ubuntu)
Fix Released
Medium
Unassigned
qtdeclarative-opensource-src (Ubuntu RTM)
Fix Released
Medium
Unassigned

Bug Description

UPSTREAM BUG: https://bugreports.qt.io/browse/QTBUG-53726

Description (copied from the upstream bug I created)

According to Flickable's documentation, widthRatio and heightRatio define
"the percentage of the full view currently visible, scaled to 0.0 - 1.0".
At the moment, defining leftMargin so that
leftMargin+contentWidth < flickable.width
causes widthRatio to be wrongly evaluated to something != 1, whereas it should be 1, because Flickable's defaults at -leftMargin
(see https://github.com/qtproject/qtdeclarative/blob/5.6/src/quick/items/qquickflickable.cpp#L1592 ).
and when contentX is -leftMargin, the whole content fits inside the view.
As a consequence of that, in the current implementation you can also scroll the item from the testcase left and right, which shouldn't be possible (because item+margin are still smaller than the view).

============================

Additional Ubuntu-specific info:
This is currently blocking the correct implementation of the new scrollbars inside TextFields (ping kalikiana or me (faenil) on IRC for more info)

========TESTCASE============

import QtQuick 2.0

Flickable {
    id: flickable
    width: 200
    height: 200
    contentWidth: item.width
    contentHeight: item.height
    topMargin: 20
    leftMargin: 40
    Component.onCompleted: console.log("xPos", flickable.visibleArea.xPosition, "widthRatio", flickable.visibleArea.widthRatio)
    Connections {
        target: flickable.visibleArea
        onXPositionChanged: console.log("xPosChanged", flickable.visibleArea.xPosition)
        onWidthRatioChanged: console.log("widthRatioChanged", flickable.visibleArea.widthRatio)
    }
    Rectangle {
        id: item
        width: 100
        height: 100
        color: "black"
    }
}

===========================

How to reproduce:
1) qmlscene testcase.qml
2) watch the console output

Actual result: widthRatio is != 1
Expected result: widthRatio == 1

===========================

Fix: I worked on a fix which is being reviewed by upstream ---> https://codereview.qt-project.org/#/c/161043/

Andrea Bernabei (faenil)
description: updated
description: updated
description: updated
Changed in qtdeclarative-opensource-src (Ubuntu RTM):
status: New → In Progress
Changed in qtdeclarative-opensource-src (Ubuntu):
importance: Undecided → Medium
Changed in qtdeclarative-opensource-src (Ubuntu RTM):
importance: Undecided → Medium
Changed in canonical-devices-system-image:
importance: Undecided → Medium
assignee: nobody → Zoltan Balogh (bzoltan)
milestone: none → 13
status: New → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :

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

Changed in qtdeclarative-opensource-src (Ubuntu):
status: New → Confirmed
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

This bug was fixed in the package qtdeclarative-opensource-src 5.4.1-1ubuntu11~overlay9~1 in https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/stable-phone-overlay

---------------

qtdeclarative-opensource-src (5.4.1-1ubuntu11~overlay9~1) vivid; urgency=medium

  * debian/patches/Flickable-fix-minXExtent-minYExtent-when-content-is-.patch:
    - Fix flickable's widthRatio and heightRatio (LP: #1588238)
  * debian/patches/QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch:
    - Fix relative mouse events (LP: #1597205)
    - debian/libqt5quick5.symbols: Update symbols.

 -- Timo Jyrinki <email address hidden> Thu, 02 Jun 2016 10:18:08 +0000

Changed in qtdeclarative-opensource-src (Ubuntu RTM):
status: In Progress → Fix Released
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package qtdeclarative-opensource-src - 5.6.1-4ubuntu2~1

---------------
qtdeclarative-opensource-src (5.6.1-4ubuntu2~1) yakkety; urgency=medium

  * debian/patches/Flickable-fix-minXExtent-minYExtent-when-content-is-.patch:
    - Fix flickable's widthRatio and heightRatio (LP: #1588238)
  * debian/patches/QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch:
    - Fix relative mouse events (LP: #1597205)
    - debian/libqt5quick5.symbols: Update symbols.

 -- Timo Jyrinki <email address hidden> Wed, 27 Jul 2016 12:11:13 +0000

Changed in qtdeclarative-opensource-src (Ubuntu):
status: Confirmed → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
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.