diff options
Diffstat (limited to 'tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp')
-rw-r--r-- | tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp | 95 |
1 files changed, 67 insertions, 28 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp index 6cbf51efd9..89fb30557b 100644 --- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp @@ -1,31 +1,26 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL21$ +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** @@ -56,6 +51,7 @@ #include <qstyleditemdelegate.h> #include <qstringlistmodel.h> #include <qsortfilterproxymodel.h> +#include <qproxystyle.h> static inline void setFrameless(QWidget *w) { @@ -252,6 +248,7 @@ private slots: void sizeHintChangeTriggersLayout(); void shiftSelectionAfterChangingModelContents(); void QTBUG48968_reentrant_updateEditorGeometries(); + void QTBUG50102_SH_ItemView_ScrollMode(); void QTBUG50535_update_on_new_selection_model(); void testSelectionModelInSyncWithView(); }; @@ -875,7 +872,7 @@ class DnDTestModel : public QStandardItemModel public: DnDTestModel() : QStandardItemModel(20, 20), dropAction_result(Qt::IgnoreAction) { for (int i = 0; i < rowCount(); ++i) - setData(index(i, 0), QString("%1").arg(i)); + setData(index(i, 0), QString::number(i)); } Qt::DropAction dropAction() const { return dropAction_result; } }; @@ -1280,9 +1277,9 @@ void tst_QAbstractItemView::task250754_fontChange() QStandardItemModel *m = new QStandardItemModel(this); for (int i=0; i<20; ++i) { - QStandardItem *item = new QStandardItem(QString("Item number %1").arg(i)); + QStandardItem *item = new QStandardItem(QStringLiteral("Item number ") + QString::number(i)); for (int j=0; j<5; ++j) { - QStandardItem *child = new QStandardItem(QString("Child Item number %1").arg(j)); + QStandardItem *child = new QStandardItem(QStringLiteral("Child Item number ") + QString::number(j)); item->setChild(j, 0, child); } m->setItem(i, 0, item); @@ -1372,7 +1369,7 @@ void tst_QAbstractItemView::shiftArrowSelectionAfterScrolling() { QStandardItemModel model; for (int i=0; i<10; ++i) { - QStandardItem *item = new QStandardItem(QString("%1").arg(i)); + QStandardItem *item = new QStandardItem(QString::number(i)); model.setItem(i, 0, item); } @@ -1409,7 +1406,7 @@ void tst_QAbstractItemView::shiftSelectionAfterRubberbandSelection() { QStandardItemModel model; for (int i=0; i<3; ++i) { - QStandardItem *item = new QStandardItem(QString("%1").arg(i)); + QStandardItem *item = new QStandardItem(QString::number(i)); model.setItem(i, 0, item); } @@ -1486,7 +1483,7 @@ void tst_QAbstractItemView::ctrlRubberbandSelection() { QStandardItemModel model; for (int i=0; i<3; ++i) { - QStandardItem *item = new QStandardItem(QString("%1").arg(i)); + QStandardItem *item = new QStandardItem(QString::number(i)); model.setItem(i, 0, item); } @@ -1612,11 +1609,6 @@ void tst_QAbstractItemView::testDelegateDestroyEditor() void tst_QAbstractItemView::testClickedSignal() { -#if defined Q_OS_BLACKBERRY - QWidget rootWindow; - rootWindow.show(); - QTest::qWaitForWindowExposed(&rootWindow); -#endif QTableWidget view(5, 5); centerOnScreen(&view); @@ -2031,6 +2023,53 @@ void tst_QAbstractItemView::QTBUG48968_reentrant_updateEditorGeometries() // No crash, all fine. } +class ScrollModeProxyStyle: public QProxyStyle +{ +public: + ScrollModeProxyStyle(QAbstractItemView::ScrollMode sm, QStyle *style = 0) + : QProxyStyle(style) + , scrollMode(sm == QAbstractItemView::ScrollPerItem ? + QAbstractItemView::ScrollPerPixel : QAbstractItemView::ScrollPerItem) + { } + + int styleHint(QStyle::StyleHint hint, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *returnData) const override + { + if (hint == SH_ItemView_ScrollMode) + return scrollMode; + + return baseStyle()->styleHint(hint, opt, w, returnData); + } + + QAbstractItemView::ScrollMode scrollMode; +}; + +void tst_QAbstractItemView::QTBUG50102_SH_ItemView_ScrollMode() +{ + QListView view; + + // Default comes from the style + auto styleScrollMode = static_cast<QAbstractItemView::ScrollMode>(view.style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, &view, 0)); + QCOMPARE(view.verticalScrollMode(), styleScrollMode); + QCOMPARE(view.horizontalScrollMode(), styleScrollMode); + + // Change style, get new value + view.setStyle(new ScrollModeProxyStyle(styleScrollMode)); + auto proxyScrollMode = static_cast<QAbstractItemView::ScrollMode>(view.style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, &view, 0)); + QVERIFY(styleScrollMode != proxyScrollMode); + QCOMPARE(view.verticalScrollMode(), proxyScrollMode); + QCOMPARE(view.horizontalScrollMode(), proxyScrollMode); + + // Explicitly set vertical, same value + view.setVerticalScrollMode(proxyScrollMode); + QCOMPARE(view.verticalScrollMode(), proxyScrollMode); + QCOMPARE(view.horizontalScrollMode(), proxyScrollMode); + + // Change style, won't change value for vertical, will change for horizontal + view.setStyle(new ScrollModeProxyStyle(proxyScrollMode)); + QCOMPARE(view.verticalScrollMode(), proxyScrollMode); + QCOMPARE(view.horizontalScrollMode(), styleScrollMode); +} + void tst_QAbstractItemView::QTBUG50535_update_on_new_selection_model() { QStandardItemModel model; |