aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktableview.cpp
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@qt.io>2022-09-01 12:37:23 +0200
committerRichard Moe Gustavsen <richard.gustavsen@qt.io>2022-09-01 20:12:33 +0000
commitbca463b61c29e68fe2a9a63ebee8e35ed125085c (patch)
tree757d159602a0a995815e038ff068e169c5007024 /src/quick/items/qquicktableview.cpp
parent5cb3ba93da2673b20abae8a544a961b7b57dff45 (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.cpp16
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