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>
This commit is contained in:
parent
05659223bf
commit
083d2c8bb8
@ -6,6 +6,7 @@ QT += widgets widgets-private testlib
|
||||
QT += core-private gui-private
|
||||
|
||||
SOURCES += tst_qgraphicsview.cpp tst_qgraphicsview_2.cpp
|
||||
HEADERS += tst_qgraphicsview.h
|
||||
DEFINES += QT_NO_CAST_TO_ASCII
|
||||
|
||||
mac:CONFIG+=insignificant_test # QTBUG-26580
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,85 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
#ifndef TST_QGRAPHICSVIEW_H
|
||||
#define TST_QGRAPHICSVIEW_H
|
||||
|
||||
// This file contains structs used in tst_qgraphicsview::scrollBarRanges.
|
||||
// Whenever these mention scrollbars or spacing it is about the number of
|
||||
// scrollbars or spacings to use as these are style dependent so that the real
|
||||
// value to add/remove has to be obtained in test run using the actual style.
|
||||
|
||||
struct ExpectedValueDescription {
|
||||
ExpectedValueDescription(int v = 0, int sbeta = 0, int sta = 0)
|
||||
: value(v)
|
||||
, scrollBarExtentsToAdd(sbeta)
|
||||
, spacingsToAdd(sta)
|
||||
{
|
||||
}
|
||||
|
||||
int value;
|
||||
// Describes how often the scrollbar widht/height has to be added to or
|
||||
// removed from the value.
|
||||
int scrollBarExtentsToAdd;
|
||||
|
||||
// Describes how often the scrollbar spacing has to be added to or removed
|
||||
// from the value if the used style has SH_ScrollView_FrameOnlyAroundContents
|
||||
// set
|
||||
int spacingsToAdd;
|
||||
};
|
||||
|
||||
// Describes how often the scroll bar width/height has to be added to/removed
|
||||
// from the according side of the sceneRect.
|
||||
struct ScrollBarCount {
|
||||
ScrollBarCount(int l = 0, int t = 0, int r = 0, int b = 0 )
|
||||
: left(l)
|
||||
, top(t)
|
||||
, right(r)
|
||||
, bottom(b)
|
||||
{
|
||||
}
|
||||
|
||||
int left;
|
||||
int top;
|
||||
int right;
|
||||
int bottom;
|
||||
};
|
||||
|
||||
#endif // TST_QGRAPHICSVIEW_H
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user