summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp61
1 files changed, 44 insertions, 17 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 4ef41f4fca..03227a440a 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -68,9 +68,15 @@
#include <private/qinputmethod_p.h>
#include "../../../qtest-config.h"
+#include "tst_qgraphicsview.h"
+Q_DECLARE_METATYPE(ExpectedValueDescription)
+Q_DECLARE_METATYPE(QList<int>)
+Q_DECLARE_METATYPE(QList<QRectF>)
+Q_DECLARE_METATYPE(QMatrix)
Q_DECLARE_METATYPE(QPainterPath)
Q_DECLARE_METATYPE(Qt::ScrollBarPolicy)
+Q_DECLARE_METATYPE(ScrollBarCount)
#ifdef Q_OS_MAC
//On mac we get full update. So check that the expected region is contained inside the actual
@@ -2756,32 +2762,32 @@ public:
void tst_QGraphicsView::scrollBarRanges()
{
+ QFETCH(QString, style);
QFETCH(QSize, viewportSize);
QFETCH(QRectF, sceneRect);
+ QFETCH(ScrollBarCount, sceneRectOffsetFactors);
QFETCH(QTransform, transform);
QFETCH(Qt::ScrollBarPolicy, hbarpolicy);
QFETCH(Qt::ScrollBarPolicy, vbarpolicy);
- QFETCH(int, hmin);
- QFETCH(int, hmax);
- QFETCH(int, vmin);
- QFETCH(int, vmax);
- QFETCH(bool, useMotif);
+ QFETCH(ExpectedValueDescription, hmin);
+ QFETCH(ExpectedValueDescription, hmax);
+ QFETCH(ExpectedValueDescription, vmin);
+ QFETCH(ExpectedValueDescription, vmax);
QFETCH(bool, useStyledPanel);
- QGraphicsScene scene(sceneRect);
- scene.addRect(sceneRect, QPen(Qt::blue), QBrush(QColor(Qt::green)));
+ if (style == QLatin1String("GTK+") && useStyledPanel)
+ QSKIP("GTK + style test skipped, see QTBUG-29002");
+
+ QGraphicsScene scene;
QGraphicsView view(&scene);
view.setRenderHint(QPainter::Antialiasing);
view.setTransform(transform);
view.setFrameStyle(useStyledPanel ? QFrame::StyledPanel : QFrame::NoFrame);
- if (useMotif) {
+ if (style == QString("motif"))
view.setStyle(new FauxMotifStyle);
- } else {
-#if !defined(QT_NO_STYLE_WINDOWS)
- view.setStyle(QStyleFactory::create("windows"));
-#endif
- }
+ else
+ view.setStyle(QStyleFactory::create(style));
view.setStyleSheet(" "); // enables style propagation ;-)
int adjust = 0;
@@ -2795,10 +2801,31 @@ void tst_QGraphicsView::scrollBarRanges()
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
- QCOMPARE(view.horizontalScrollBar()->minimum(), hmin);
- QCOMPARE(view.verticalScrollBar()->minimum(), vmin);
- QCOMPARE(view.horizontalScrollBar()->maximum(), hmax);
- QCOMPARE(view.verticalScrollBar()->maximum(), vmax);
+ const int offset = view.style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, 0);
+
+ QRectF actualSceneRect;
+ actualSceneRect.setLeft(sceneRect.left() + sceneRectOffsetFactors.left * offset);
+ actualSceneRect.setWidth(sceneRect.width() + sceneRectOffsetFactors.right * offset);
+ actualSceneRect.setTop(sceneRect.top() + sceneRectOffsetFactors.top * offset);
+ actualSceneRect.setHeight(sceneRect.height() + sceneRectOffsetFactors.bottom * offset);
+ scene.setSceneRect(actualSceneRect);
+ scene.addRect(actualSceneRect, QPen(Qt::blue), QBrush(QColor(Qt::green)));
+
+ int expectedHmin = hmin.value + hmin.scrollBarExtentsToAdd * offset;
+ int expectedVmin = vmin.value + vmin.scrollBarExtentsToAdd * offset;
+ int expectedHmax = hmax.value + hmax.scrollBarExtentsToAdd * offset;
+ int expectedVmax = vmax.value + vmax.scrollBarExtentsToAdd* offset;
+ if (useStyledPanel && view.style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents)) {
+ int spacing = view.style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing);
+ expectedHmin += hmin.spacingsToAdd * spacing;
+ expectedVmin += vmin.spacingsToAdd * spacing;
+ expectedHmax += hmax.spacingsToAdd * spacing;
+ expectedVmax += vmax.spacingsToAdd * spacing;
+ }
+ QCOMPARE(view.horizontalScrollBar()->minimum(), expectedHmin);
+ QCOMPARE(view.verticalScrollBar()->minimum(), expectedVmin);
+ QCOMPARE(view.horizontalScrollBar()->maximum(), expectedHmax);
+ QCOMPARE(view.verticalScrollBar()->maximum(), expectedVmax);
}
class TestView : public QGraphicsView