← Back to team overview

ubuntu-sdk-bugs team mailing list archive

[Bug 1588238] Re: Flickable's widthRatio and heightRatio are wrong when the content is smaller than the view and has topMargin/leftMargin

 

** Also affects: canonical-devices-system-image
   Importance: Undecided
       Status: New

** 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

** Changed in: canonical-devices-system-image
     Assignee: (unassigned) => Zoltan Balogh (bzoltan)

** Changed in: canonical-devices-system-image
    Milestone: None => 13

** Changed in: canonical-devices-system-image
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
SDK bug tracking, which is subscribed to qtdeclarative-opensource-src in
Ubuntu.
https://bugs.launchpad.net/bugs/1588238

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

Status in Canonical System Image:
  In Progress
Status in qtdeclarative-opensource-src package in Ubuntu:
  New
Status in qtdeclarative-opensource-src package in Ubuntu RTM:
  In Progress

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/

To manage notifications about this bug go to:
https://bugs.launchpad.net/canonical-devices-system-image/+bug/1588238/+subscriptions


References