diff options
author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2022-09-01 12:37:23 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-09-02 00:40:24 +0000 |
commit | c54ffcccd1eb9d4f87b04d2911eaf4351ef10953 (patch) | |
tree | 594c0e66859e717b4c76751fb2b373880076d399 /src | |
parent | 071e86cde5831f64c9c4746bce7519b4a3de04b1 (diff) |
QQuickTableView: avoid printing out incorrect warning
A warning would be printed out from TableView if you called
positionViewAtCell with a mode that affected either horizontal
or vertical alignment, but not both. The reason is that the
overridden version would just forward the call to
positionViewAtRow() and positionViewAtColumn(), without
checking if the given mode allowed for it first.
This patch will instead check the mode first, before
deciding which functions to call. This will stop
the warning from being incorrectly printed.
Change-Id: I58145873def7543fcffd51ade7d15c70fb755aae
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
(cherry picked from commit bca463b61c29e68fe2a9a63ebee8e35ed125085c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquicktableview.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/quick/items/qquicktableview.cpp b/src/quick/items/qquicktableview.cpp index 54781968b4..e2bd1a17de 100644 --- a/src/quick/items/qquicktableview.cpp +++ b/src/quick/items/qquicktableview.cpp @@ -4634,14 +4634,22 @@ void QQuickTableView::positionViewAtColumn(int column, PositionMode mode, qreal void QQuickTableView::positionViewAtCell(const QPoint &cell, PositionMode mode, const QPointF &offset, const QRectF &subRect) { - positionViewAtRow(cell.y(), mode, offset.y(), subRect); - positionViewAtColumn(cell.x(), mode, offset.x(), subRect); + positionViewAtCell(cell.x(), cell.y(), mode, offset, subRect); } void QQuickTableView::positionViewAtCell(int column, int row, PositionMode mode, const QPointF &offset, const QRectF &subRect) { - positionViewAtRow(row, mode, offset.y(), subRect); - positionViewAtColumn(column, mode, offset.x(), subRect); + PositionMode horizontalMode = mode & ~(AlignTop | AlignBottom | AlignVCenter); + PositionMode verticalMode = mode & ~(AlignLeft | AlignRight | AlignHCenter); + if (!horizontalMode && !verticalMode) { + qmlWarning(this) << "Unsupported mode:" << int(mode); + return; + } + + if (horizontalMode) + positionViewAtColumn(column, horizontalMode, offset.x(), subRect); + if (verticalMode) + positionViewAtRow(row, verticalMode, offset.y(), subRect); } QQuickItem *QQuickTableView::itemAtCell(const QPoint &cell) const |