diff options
| author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2022-09-01 12:37:23 +0200 |
|---|---|---|
| committer | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2022-09-01 20:12:33 +0000 |
| commit | bca463b61c29e68fe2a9a63ebee8e35ed125085c (patch) | |
| tree | 757d159602a0a995815e038ff068e169c5007024 /src/quick/items/qquicktableview.cpp | |
| parent | 5cb3ba93da2673b20abae8a544a961b7b57dff45 (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.
Pick-to: 6.4
Change-Id: I58145873def7543fcffd51ade7d15c70fb755aae
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/items/qquicktableview.cpp')
| -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 |
