diff options
author | Jo Asplin <jo.asplin@nokia.com> | 2011-10-20 13:17:26 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-20 19:45:41 +0200 |
commit | 9f1aa866bda7678261f2f441d4cfd5bb524c2411 (patch) | |
tree | 5028f578122e7feb9200d571405494c73d96db89 /tests/auto/qdockwidget/tst_qdockwidget.cpp | |
parent | 78d02e93aca5325fc5be9bfd275862795207abaa (diff) |
Moved tests into integrationtests/ and widgets/
Task-number: QTBUG-19013
Change-Id: Ibb776f5967c0645ce6d22ef7afdc40657c575461
Reviewed-by: Holger Ihrig <holger.ihrig@nokia.com>
Diffstat (limited to 'tests/auto/qdockwidget/tst_qdockwidget.cpp')
-rw-r--r-- | tests/auto/qdockwidget/tst_qdockwidget.cpp | 877 |
1 files changed, 0 insertions, 877 deletions
diff --git a/tests/auto/qdockwidget/tst_qdockwidget.cpp b/tests/auto/qdockwidget/tst_qdockwidget.cpp deleted file mode 100644 index 2c1f7c0954..0000000000 --- a/tests/auto/qdockwidget/tst_qdockwidget.cpp +++ /dev/null @@ -1,877 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** 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, Nokia gives you certain additional -** rights. These rights are described in the Nokia 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - - -#include <QtTest/QtTest> - - -#include <qaction.h> -#include <qdockwidget.h> -#include <qmainwindow.h> -#include <qlineedit.h> -#include <QDesktopWidget> -#include <QtGui/QPainter> -#include "private/qdockwidget_p.h" - -bool hasFeature(QDockWidget *dockwidget, QDockWidget::DockWidgetFeature feature) -{ return (dockwidget->features() & feature) == feature; } - -void setFeature(QDockWidget *dockwidget, QDockWidget::DockWidgetFeature feature, bool on = true) -{ - const QDockWidget::DockWidgetFeatures features = dockwidget->features(); - dockwidget->setFeatures(on ? features | feature : features & ~feature); -} - -//TESTED_FILES= - -class tst_QDockWidget : public QObject -{ - Q_OBJECT - -public: - tst_QDockWidget(); - -private slots: - void getSetCheck(); - void widget(); - void features(); - void setFloating(); - void allowedAreas(); - void toggleViewAction(); - void visibilityChanged(); - void dockLocationChanged(); - void setTitleBarWidget(); - void titleBarDoubleClick(); - void restoreStateOfFloating(); - // task specific tests: - void task165177_deleteFocusWidget(); - void task169808_setFloating(); - void task237438_setFloatingCrash(); - void task248604_infiniteResize(); - void task258459_visibilityChanged(); - void taskQTBUG_1665_closableChanged(); - void taskQTBUG_9758_undockedGeometry(); -}; - -// Testing get/set functions -void tst_QDockWidget::getSetCheck() -{ - QDockWidget obj1; - // QWidget * QDockWidget::widget() - // void QDockWidget::setWidget(QWidget *) - QWidget *var1 = new QWidget(); - obj1.setWidget(var1); - QCOMPARE(var1, obj1.widget()); - obj1.setWidget((QWidget *)0); - QCOMPARE((QWidget *)0, obj1.widget()); - delete var1; - - // DockWidgetFeatures QDockWidget::features() - // void QDockWidget::setFeatures(DockWidgetFeatures) - obj1.setFeatures(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetClosable)); - QCOMPARE(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetClosable), obj1.features()); - obj1.setFeatures(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetMovable)); - QCOMPARE(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetMovable), obj1.features()); - obj1.setFeatures(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetFloatable)); - QCOMPARE(QDockWidget::DockWidgetFeatures(QDockWidget::DockWidgetFloatable), obj1.features()); - obj1.setFeatures(QDockWidget::DockWidgetFeatures(QDockWidget::AllDockWidgetFeatures)); - QCOMPARE(QDockWidget::DockWidgetFeatures(QDockWidget::AllDockWidgetFeatures), obj1.features()); - obj1.setFeatures(QDockWidget::DockWidgetFeatures(QDockWidget::NoDockWidgetFeatures)); - QCOMPARE(QDockWidget::DockWidgetFeatures(QDockWidget::NoDockWidgetFeatures), obj1.features()); -} - -tst_QDockWidget::tst_QDockWidget() -{ - qRegisterMetaType<QDockWidget::DockWidgetFeatures>("QDockWidget::DockWidgetFeatures"); - qRegisterMetaType<Qt::DockWidgetAreas>("Qt::DockWidgetAreas"); -} - -void tst_QDockWidget::widget() -{ - { - QDockWidget dw; - QVERIFY(dw.widget() == 0); - } - - { - QDockWidget dw; - QWidget *w1 = new QWidget; - QWidget *w2 = new QWidget; - - dw.setWidget(w1); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w1); - QCOMPARE(w1->parentWidget(), (QWidget*)&dw); - - dw.setWidget(0); - QVERIFY(dw.widget() == 0); - - dw.setWidget(w2); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w2); - QCOMPARE(w2->parentWidget(), (QWidget*)&dw); - - dw.setWidget(0); - QVERIFY(dw.widget() == 0); - - dw.setWidget(w1); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w1); - QCOMPARE(w1->parentWidget(), (QWidget*)&dw); - - dw.setWidget(w2); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w2); - QCOMPARE(w2->parentWidget(), (QWidget*)&dw); - - dw.setWidget(0); - QVERIFY(dw.widget() == 0); - } - - { - QDockWidget dw; - QWidget *w1 = new QWidget; - QWidget *w2 = new QWidget; - - dw.setWidget(w1); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w1); - QCOMPARE(w1->parentWidget(), (QWidget*)&dw); - - w1->setParent(0); - QVERIFY(dw.widget() == 0); - - dw.setWidget(w2); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w2); - QCOMPARE(w2->parentWidget(), (QWidget*)&dw); - - w2->setParent(0); - QVERIFY(dw.widget() == 0); - - dw.setWidget(w1); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w1); - QCOMPARE(w1->parentWidget(), (QWidget*)&dw); - - dw.setWidget(w2); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w2); - QCOMPARE(w2->parentWidget(), (QWidget*)&dw); - - w1->setParent(0); - QVERIFY(dw.widget() != 0); - QVERIFY(dw.widget() == w2); - QCOMPARE(w2->parentWidget(), (QWidget*)&dw); - - w2->setParent(0); - QVERIFY(dw.widget() == 0); - delete w1; - delete w2; - } -} - -void tst_QDockWidget::features() -{ - QDockWidget dw; - - QSignalSpy spy(&dw, SIGNAL(featuresChanged(QDockWidget::DockWidgetFeatures))); - - // default features for dock widgets - int allDockWidgetFeatures = QDockWidget::DockWidgetClosable | - QDockWidget::DockWidgetMovable | - QDockWidget::DockWidgetFloatable; - - // defaults - QCOMPARE(dw.features(), allDockWidgetFeatures); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - - // test individual setting - setFeature(&dw, QDockWidget::DockWidgetClosable, false); - QCOMPARE(dw.features(), QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*(static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData())), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - setFeature(&dw, QDockWidget::DockWidgetClosable); - QCOMPARE(dw.features(), allDockWidgetFeatures); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - setFeature(&dw, QDockWidget::DockWidgetMovable, false); - QCOMPARE(dw.features(), QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - setFeature(&dw, QDockWidget::DockWidgetMovable); - QCOMPARE(dw.features(), allDockWidgetFeatures); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - setFeature(&dw, QDockWidget::DockWidgetFloatable, false); - QCOMPARE(dw.features(), QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - setFeature(&dw, QDockWidget::DockWidgetFloatable); - QCOMPARE(dw.features(), allDockWidgetFeatures); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - // set all at once - dw.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - QCOMPARE(dw.features(), QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - dw.setFeatures(QDockWidget::DockWidgetClosable); - QCOMPARE(dw.features(), QDockWidget::DockWidgetClosable); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(!hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - dw.setFeatures(QDockWidget::AllDockWidgetFeatures); - QCOMPARE(dw.features(), QDockWidget::AllDockWidgetFeatures); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetClosable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetMovable)); - QVERIFY(hasFeature(&dw, QDockWidget::DockWidgetFloatable)); - QCOMPARE(spy.count(), 1); - QCOMPARE((int)*static_cast<const QDockWidget::DockWidgetFeature *>(spy.at(0).value(0).constData()), - (int)dw.features()); - spy.clear(); - dw.setFeatures(dw.features()); - QCOMPARE(spy.count(), 0); - spy.clear(); -} - -void tst_QDockWidget::setFloating() -{ - QMainWindow mw; - QDockWidget dw; - mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); - - mw.show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mw); -#endif - - QVERIFY(!dw.isFloating()); - - QSignalSpy spy(&dw, SIGNAL(topLevelChanged(bool))); - - dw.setFloating(true); - QVERIFY(dw.isFloating()); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).value(0).toBool(), dw.isFloating()); - spy.clear(); - dw.setFloating(dw.isFloating()); - QCOMPARE(spy.count(), 0); - spy.clear(); - - dw.setFloating(false); - QVERIFY(!dw.isFloating()); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).value(0).toBool(), dw.isFloating()); - spy.clear(); - dw.setFloating(dw.isFloating()); - QCOMPARE(spy.count(), 0); - spy.clear(); -} - -void tst_QDockWidget::allowedAreas() -{ - QDockWidget dw; - - QSignalSpy spy(&dw, SIGNAL(allowedAreasChanged(Qt::DockWidgetAreas))); - - // default - QCOMPARE(dw.allowedAreas(), Qt::AllDockWidgetAreas); - QVERIFY(dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - - // a single dock window area - dw.setAllowedAreas(Qt::LeftDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::LeftDockWidgetArea); - QVERIFY(dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::RightDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::RightDockWidgetArea); - QVERIFY(!dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::TopDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::TopDockWidgetArea); - QVERIFY(!dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::BottomDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::BottomDockWidgetArea); - QVERIFY(!dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - // multiple dock window areas - dw.setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); - QVERIFY(!dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - QVERIFY(dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::TopDockWidgetArea | Qt::LeftDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::TopDockWidgetArea | Qt::LeftDockWidgetArea); - QVERIFY(dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); - - dw.setAllowedAreas(Qt::BottomDockWidgetArea | Qt::RightDockWidgetArea); - QCOMPARE(dw.allowedAreas(), Qt::BottomDockWidgetArea | Qt::RightDockWidgetArea); - QVERIFY(!dw.isAreaAllowed(Qt::LeftDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::RightDockWidgetArea)); - QVERIFY(!dw.isAreaAllowed(Qt::TopDockWidgetArea)); - QVERIFY(dw.isAreaAllowed(Qt::BottomDockWidgetArea)); - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const Qt::DockWidgetAreas *>(spy.at(0).value(0).constData()), - dw.allowedAreas()); - spy.clear(); - dw.setAllowedAreas(dw.allowedAreas()); - QCOMPARE(spy.count(), 0); -} - -void tst_QDockWidget::toggleViewAction() -{ - QMainWindow mw; - QDockWidget dw(&mw); - mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); - mw.show(); - QAction *toggleViewAction = dw.toggleViewAction(); - QVERIFY(!dw.isHidden()); - toggleViewAction->trigger(); - QVERIFY(dw.isHidden()); - toggleViewAction->trigger(); - QVERIFY(!dw.isHidden()); - toggleViewAction->trigger(); - QVERIFY(dw.isHidden()); -} - -void tst_QDockWidget::visibilityChanged() -{ - QMainWindow mw; - QDockWidget dw; - QSignalSpy spy(&dw, SIGNAL(visibilityChanged(bool))); - - mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); - mw.show(); - - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); - spy.clear(); - - dw.hide(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), false); - spy.clear(); - - dw.hide(); - QCOMPARE(spy.count(), 0); - - dw.show(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); - spy.clear(); - - dw.show(); - QCOMPARE(spy.count(), 0); - - QDockWidget dw2; - mw.tabifyDockWidget(&dw, &dw2); - dw2.show(); - dw2.raise(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), false); - spy.clear(); - - dw2.hide(); - qApp->processEvents(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); - spy.clear(); - - dw2.show(); - dw2.raise(); - qApp->processEvents(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), false); - spy.clear(); - - dw.raise(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); - spy.clear(); - - dw.raise(); - QCOMPARE(spy.count(), 0); - - dw2.raise(); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), false); - spy.clear(); - - dw2.raise(); - QCOMPARE(spy.count(), 0); - - mw.addDockWidget(Qt::RightDockWidgetArea, &dw2); - QTest::qWait(200); - QCOMPARE(spy.count(), 1); - QCOMPARE(spy.at(0).at(0).toBool(), true); -} - -Q_DECLARE_METATYPE(Qt::DockWidgetArea) - -void tst_QDockWidget::dockLocationChanged() -{ - qRegisterMetaType<Qt::DockWidgetArea>("Qt::DockWidgetArea"); - - QMainWindow mw; - QDockWidget dw; - dw.setObjectName("dock1"); - QSignalSpy spy(&dw, SIGNAL(dockLocationChanged(Qt::DockWidgetArea))); - - mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::LeftDockWidgetArea); - spy.clear(); - - mw.addDockWidget(Qt::LeftDockWidgetArea, &dw); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::LeftDockWidgetArea); - spy.clear(); - - mw.addDockWidget(Qt::RightDockWidgetArea, &dw); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::RightDockWidgetArea); - spy.clear(); - - mw.removeDockWidget(&dw); - QCOMPARE(spy.count(), 0); - - QDockWidget dw2; - dw2.setObjectName("dock2"); - mw.addDockWidget(Qt::TopDockWidgetArea, &dw2); - mw.tabifyDockWidget(&dw2, &dw); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::TopDockWidgetArea); - spy.clear(); - - mw.splitDockWidget(&dw2, &dw, Qt::Horizontal); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::TopDockWidgetArea); - spy.clear(); - - dw.setFloating(true); - QTest::qWait(100); - dw.setFloating(false); - QTest::qWait(100); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::TopDockWidgetArea); - spy.clear(); - - QByteArray ba = mw.saveState(); - mw.restoreState(ba); - QCOMPARE(spy.count(), 1); - QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)), - Qt::TopDockWidgetArea); -} - -void tst_QDockWidget::setTitleBarWidget() -{ - //test the successive usage of setTitleBarWidget - - QDockWidget dock; - QWidget w, w2; - - dock.show(); - qApp->processEvents(); - - dock.setTitleBarWidget(&w); - qApp->processEvents(); - QCOMPARE(w.isVisible(), true); - - //set another widget as the titlebar widget - dock.setTitleBarWidget(&w2); // this used to crash (task 184668) - qApp->processEvents(); - QCOMPARE(w.isVisible(), false); - QCOMPARE(w2.isVisible(), true); - - //tries to reset the titlebarwidget to none - dock.setTitleBarWidget(0); - qApp->processEvents(); - QCOMPARE(w.isVisible(), false); - QCOMPARE(w2.isVisible(), false); -} - -void tst_QDockWidget::titleBarDoubleClick() -{ - QMainWindow win; - QDockWidget dock(&win); - win.show(); - dock.setFloating(true); - - QEvent e(QEvent::NonClientAreaMouseButtonDblClick); - QApplication::sendEvent(&dock, &e); - QVERIFY(dock.isFloating()); - QCOMPARE(win.dockWidgetArea(&dock), Qt::NoDockWidgetArea); - - win.addDockWidget(Qt::TopDockWidgetArea, &dock); - dock.setFloating(true); - QApplication::sendEvent(&dock, &e); - QVERIFY(!dock.isFloating()); - QCOMPARE(win.dockWidgetArea(&dock), Qt::TopDockWidgetArea); -} - -void tst_QDockWidget::restoreStateOfFloating() -{ - QMainWindow mw; - QDockWidget dock; - dock.setObjectName("dock1"); - mw.addDockWidget(Qt::TopDockWidgetArea, &dock); - QVERIFY(!dock.isFloating()); - QByteArray ba = mw.saveState(); - dock.setFloating(true); - QVERIFY(dock.isFloating()); - QVERIFY(mw.restoreState(ba)); - QVERIFY(!dock.isFloating()); -} - - -void tst_QDockWidget::task165177_deleteFocusWidget() -{ - QMainWindow mw; - QDockWidget *dw = new QDockWidget(&mw); - mw.addDockWidget(Qt::LeftDockWidgetArea, dw); - QLineEdit *ledit = new QLineEdit; - dw->setWidget(ledit); - mw.show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mw); -#endif - qApp->processEvents(); - dw->setFloating(true); - delete ledit; - QCOMPARE(mw.focusWidget(), (QWidget *)0); - QCOMPARE(dw->focusWidget(), (QWidget *)0); -} - -void tst_QDockWidget::task169808_setFloating() -{ - //we try to test if the sizeHint of the dock widget widget is taken into account - - class MyWidget : public QWidget - { - public: - QSize sizeHint() const - { - const QRect& deskRect = qApp->desktop()->availableGeometry(); - return QSize(qMin(300, deskRect.width()), 300); - } - - QSize minimumSizeHint() const - { - return QSize(20,20); - } - - void paintEvent(QPaintEvent *) - { - QPainter p(this); - p.fillRect(rect(), Qt::red); - } - }; - QMainWindow mw; - mw.setCentralWidget(new MyWidget); - QDockWidget *dw = new QDockWidget("my dock"); - dw->setWidget(new MyWidget); - mw.addDockWidget(Qt::LeftDockWidgetArea, dw); - dw->setFloating(true); - mw.show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mw); -#endif - - QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); - - //and now we try to test if the contents margin is taken into account - dw->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - dw->setFloating(false); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mw); -#endif - QTest::qWait(100); //leave time processing events - - - const QSize oldSize = dw->size(); - const int margin = 20; - - dw->setContentsMargins(margin, margin, margin, margin); - -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mw); -#endif - QTest::qWait(100); //leave time processing events - - //widget size shouldn't have changed - QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); - //dockwidget should be bigger - QCOMPARE(dw->size(), oldSize + QSize(margin * 2, margin * 2)); - - -} - -void tst_QDockWidget::task237438_setFloatingCrash() -{ - //should not crash - QDockWidget pqdwDock; - pqdwDock.setFloating(false); - pqdwDock.show(); -} - -void tst_QDockWidget::task248604_infiniteResize() -{ - QDockWidget d; - QTabWidget *t = new QTabWidget; - t->addTab(new QWidget, "Foo"); - d.setWidget(t); - d.setContentsMargins(2, 2, 2, 2); - d.setMinimumSize(320, 240); - d.show(); - QTest::qWait(400); - QCOMPARE(d.size(), QSize(320, 240)); -} - - -void tst_QDockWidget::task258459_visibilityChanged() -{ - QMainWindow win; - QDockWidget dock1, dock2; - win.addDockWidget(Qt::RightDockWidgetArea, &dock1); - win.tabifyDockWidget(&dock1, &dock2); - QSignalSpy spy1(&dock1, SIGNAL(visibilityChanged(bool))); - QSignalSpy spy2(&dock2, SIGNAL(visibilityChanged(bool))); - win.show(); - QTest::qWait(200); - QCOMPARE(spy1.count(), 1); - QCOMPARE(spy1.first().first().toBool(), false); //dock1 is invisible - QCOMPARE(spy2.count(), 1); - QCOMPARE(spy2.first().first().toBool(), true); //dock1 is visible -} - -void tst_QDockWidget::taskQTBUG_1665_closableChanged() -{ - QDockWidget dock; - dock.show(); - QTest::qWaitForWindowShown(&dock); - - QDockWidgetLayout *l = qobject_cast<QDockWidgetLayout*>(dock.layout()); - - if (l && !l->nativeWindowDeco()) - QSKIP("this machine doesn't support native dock widget", SkipAll); - - QVERIFY(dock.windowFlags() & Qt::WindowCloseButtonHint); - - //now let's remove the closable attribute - dock.setFeatures(dock.features() ^ QDockWidget::DockWidgetClosable); - QVERIFY(!(dock.windowFlags() & Qt::WindowCloseButtonHint)); -} - -void tst_QDockWidget::taskQTBUG_9758_undockedGeometry() -{ - QMainWindow window; - QDockWidget dock1(&window); - QDockWidget dock2(&window); - window.addDockWidget(Qt::RightDockWidgetArea, &dock1); - window.addDockWidget(Qt::RightDockWidgetArea, &dock2); - window.tabifyDockWidget(&dock1, &dock2); - dock1.hide(); - dock2.hide(); - window.show(); - QTest::qWaitForWindowShown(&window); - dock1.setFloating(true); - dock1.show(); - QTest::qWaitForWindowShown(&dock1); - - QVERIFY(dock1.x() >= 0); - QVERIFY(dock1.y() >= 0); -} - - - -QTEST_MAIN(tst_QDockWidget) -#include "tst_qdockwidget.moc" |