summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@digia.com>2012-12-17 14:15:59 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-09 08:59:26 +0100
commit083d2c8bb8a2a0fc92342625049bd7becdcea922 (patch)
tree2eb0fe9f3eec59eba2858ac85069bb6d3d147075 /tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
parent05659223bf02c8bac0463fe1e7a9364ef5677b75 (diff)
Removed hardcoded values from tst_qgraphicsview::scrollBarRanges
Instead of testing the "windows" and "motif" styles, that test should actually test the scrollBarRanges for all available styles. To be able to do that, the magic numbers 16 (width/height of scrollbars) and 4 (spacing for the faux motif style) were replaced and instead of setting the explicit values in the data the "number of scrollbars/spacings to add/remove" is saved in a struct and the value of these (depending on the style) is obtained in the test run. This change does not also cause the fusion style to also be tested but also fixes this test for Windows 7 and 8 (Aero) where the scrollbar width/height is not 16 but 17. Task-number: QTBUG-28611 Task-number: QTBUG-29002 Change-Id: I5d103018fde81cee6e6e89cd414426768b2dc8e7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
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