diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-27 21:36:32 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-27 21:36:32 +0200 |
commit | 1c8451bdbbd6ca909dfc5b96a24be909810522fc (patch) | |
tree | 9cc69a4794e23f7224d75fc2323fc70e294a9454 /tests/auto/widgets/widgets | |
parent | 7ebec0fa848de299d4cdee06ccc611ee46494fbf (diff) | |
parent | 0635b1a69dd666f5eed4b096895bd80b1a9420ff (diff) |
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
src/tools/qdoc/tree.cpp
tests/auto/gui/painting/qcolor/tst_qcolor.cpp
Change-Id: Iaa78f601a63191fa643aabf853520f913f2f0fdc
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r-- | tests/auto/widgets/widgets/qcombobox/BLACKLIST | 3 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp | 73 |
2 files changed, 69 insertions, 7 deletions
diff --git a/tests/auto/widgets/widgets/qcombobox/BLACKLIST b/tests/auto/widgets/widgets/qcombobox/BLACKLIST new file mode 100644 index 0000000000..4a270c085b --- /dev/null +++ b/tests/auto/widgets/widgets/qcombobox/BLACKLIST @@ -0,0 +1,3 @@ +QTBUG-45531 +[task260974_menuItemRectangleForComboBoxPopup] +osx-10.10 diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp index 0521a9bd99..ade9f72543 100644 --- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp +++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp @@ -72,6 +72,7 @@ private slots: void setTitleBarWidget(); void titleBarDoubleClick(); void restoreStateOfFloating(); + void restoreDockWidget(); // task specific tests: void task165177_deleteFocusWidget(); void task169808_setFloating(); @@ -694,20 +695,78 @@ void tst_QDockWidget::titleBarDoubleClick() QCOMPARE(win.dockWidgetArea(&dock), Qt::TopDockWidgetArea); } +static QDockWidget *createTestDock(QMainWindow &parent) +{ + const QString title = QStringLiteral("dock1"); + QDockWidget *dock = new QDockWidget(title, &parent); + dock->setObjectName(title); + dock->setAllowedAreas(Qt::AllDockWidgetAreas); + return dock; +} + void tst_QDockWidget::restoreStateOfFloating() { QMainWindow mw; - QDockWidget dock; - dock.setObjectName("dock1"); - mw.addDockWidget(Qt::TopDockWidgetArea, &dock); - QVERIFY(!dock.isFloating()); + QDockWidget *dock = createTestDock(mw); + mw.addDockWidget(Qt::TopDockWidgetArea, dock); + QVERIFY(!dock->isFloating()); QByteArray ba = mw.saveState(); - dock.setFloating(true); - QVERIFY(dock.isFloating()); + dock->setFloating(true); + QVERIFY(dock->isFloating()); QVERIFY(mw.restoreState(ba)); - QVERIFY(!dock.isFloating()); + QVERIFY(!dock->isFloating()); } +void tst_QDockWidget::restoreDockWidget() +{ + QByteArray geometry; + QByteArray state; + const QString name = QStringLiteral("main"); + const QRect availableGeometry = QApplication::desktop()->availableGeometry(); + const QSize size = availableGeometry.size() / 5; + const QPoint mainWindowPos = availableGeometry.bottomRight() - QPoint(size.width(), size.height()) - QPoint(100, 100); + const QPoint dockPos = availableGeometry.center(); + + { + QMainWindow saveWindow; + saveWindow.setObjectName(name); + saveWindow.setWindowTitle(QTest::currentTestFunction() + QStringLiteral(" save")); + saveWindow.resize(size); + saveWindow.move(mainWindowPos); + saveWindow.restoreState(QByteArray()); + QDockWidget *dock = createTestDock(saveWindow); + QVERIFY(!saveWindow.restoreDockWidget(dock)); // Not added, no placeholder + saveWindow.addDockWidget(Qt::TopDockWidgetArea, dock); + dock->setFloating(true); + dock->resize(size); + dock->move(dockPos); + saveWindow.show(); + QVERIFY(QTest::qWaitForWindowExposed(&saveWindow)); + QVERIFY(dock->isFloating()); + state = saveWindow.saveState(); + geometry = saveWindow.saveGeometry(); + } + + QVERIFY(!geometry.isEmpty()); + QVERIFY(!state.isEmpty()); + + { + QMainWindow restoreWindow; + restoreWindow.setObjectName(name); + restoreWindow.setWindowTitle(QTest::currentTestFunction() + QStringLiteral(" restore")); + QVERIFY(restoreWindow.restoreState(state)); + QVERIFY(restoreWindow.restoreGeometry(geometry)); + + // QMainWindow::restoreDockWidget() restores the state when adding the dock + // after restoreState(). + QDockWidget *dock = createTestDock(restoreWindow); + QVERIFY(restoreWindow.restoreDockWidget(dock)); + restoreWindow.show(); + QVERIFY(QTest::qWaitForWindowExposed(&restoreWindow)); + QTRY_VERIFY(dock->isFloating()); + QTRY_COMPARE(dock->pos(), dockPos); + } +} void tst_QDockWidget::task165177_deleteFocusWidget() { |