diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp index 8121a3637f..60b675b18a 100644 --- a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp +++ b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp @@ -1,38 +1,11 @@ -/**************************************************************************** -** -** Copyright (C) 2019 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: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 https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** 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$ -** -****************************************************************************/ - - -#include <QtTest/QtTest> +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include "qmdisubwindow.h" #include "private/qmdisubwindow_p.h" #include "qmdiarea.h" +#include <QTest> #include <QLayout> #include <QLineEdit> #include <QMainWindow> @@ -47,10 +20,13 @@ #include <QStyleOptionTitleBar> #include <QPushButton> #include <QScreen> +#include <QScrollBar> #include <QSizeGrip> - +#include <QSignalSpy> #include <QList> +#include <QtWidgets/private/qapplication_p.h> + QT_BEGIN_NAMESPACE extern bool qt_tab_all_widgets(); QT_END_NAMESPACE @@ -223,6 +199,7 @@ private slots: void styleChange(); void testFullScreenState(); void testRemoveBaseWidget(); + void testRespectMinimumSize(); }; void tst_QMdiSubWindow::initTestCase() @@ -407,7 +384,6 @@ void tst_QMdiSubWindow::mainWindowSupport() mainWindow.setCentralWidget(workspace); mainWindow.show(); mainWindow.menuBar()->setVisible(true); - QApplication::setActiveWindow(&mainWindow); bool nativeMenuBar = mainWindow.menuBar()->isNativeMenuBar(); // QMainWindow's window title is empty, so on a platform which does NOT have a native menubar, @@ -496,7 +472,7 @@ void tst_QMdiSubWindow::mainWindowSupport() workspace->activateNextSubWindow(); QCoreApplication::processEvents(); - for (QMdiSubWindow *window : qAsConst(windows)) { + for (QMdiSubWindow *window : std::as_const(windows)) { QCOMPARE(workspace->activeSubWindow(), window); QVERIFY(window->isMaximized()); QVERIFY(window->maximizedButtonsWidget()); @@ -533,7 +509,6 @@ void tst_QMdiSubWindow::emittingOfSignals() workspace.setWindowTitle(QLatin1String(QTest::currentTestFunction())); workspace.show(); QCoreApplication::processEvents(); - QApplication::setActiveWindow(&workspace); QMdiSubWindow *window = qobject_cast<QMdiSubWindow *>(workspace.addSubWindow(new QWidget)); QCoreApplication::processEvents(); window->show(); @@ -553,9 +528,9 @@ void tst_QMdiSubWindow::emittingOfSignals() int count = 0; if (signal == SIGNAL(aboutToActivate())) { - count += spy.count(); + count += spy.size(); } else { - for (int i = 0; i < spy.count(); ++i) { + for (int i = 0; i < spy.size(); ++i) { Qt::WindowStates oldState = qvariant_cast<Qt::WindowStates>(spy.at(i).at(0)); Qt::WindowStates newState = qvariant_cast<Qt::WindowStates>(spy.at(i).at(1)); if (watchedState != Qt::WindowNoState) { @@ -578,7 +553,7 @@ void tst_QMdiSubWindow::emittingOfSignals() spy.clear(); triggerSignal(window, &workspace, signal); - QCOMPARE(spy.count(), 0); + QCOMPARE(spy.size(), 0); delete window; window = nullptr; @@ -977,6 +952,8 @@ void tst_QMdiSubWindow::mouseDoubleClick() if (!window->style()->styleHint(QStyle::SH_TitleBar_NoBorder, &options, window)) height += window->isMinimized() ? 8 : 4; QPoint mousePosition(window->width() / 2, height - 1); + if (window->style()->inherits("QWindows11Style")) + mousePosition = QPoint(8, height - 1); sendMouseMove(window, mousePosition, Qt::NoButton); // Without Qt::WindowShadeButtonHint flag set @@ -1004,8 +981,10 @@ void tst_QMdiSubWindow::mouseDoubleClick() window->showMinimized(); QVERIFY(window->isMinimized()); + //Process QEvent::WindowStateChange + QCoreApplication::processEvents(); sendMouseDoubleClick(window, mousePosition); - QVERIFY(!window->isMinimized()); + QTRY_VERIFY(!window->isMinimized()); QCOMPARE(window->geometry(), originalGeometry); } @@ -1055,7 +1034,7 @@ void tst_QMdiSubWindow::setSystemMenu() subWindow->setSystemMenu(systemMenu); QCOMPARE(subWindow->systemMenu(), qobject_cast<QMenu *>(systemMenu)); QCOMPARE(subWindow->systemMenu()->parentWidget(), static_cast<QWidget *>(subWindow)); - QCOMPARE(subWindow->systemMenu()->actions().count(), 1); + QCOMPARE(subWindow->systemMenu()->actions().size(), 1); // Show the new system menu QVERIFY(!QApplication::activePopupWidget()); @@ -1159,7 +1138,7 @@ void tst_QMdiSubWindow::restoreFocus() topArea.show(); box->show(); - QApplication::setActiveWindow(&topArea); + QApplicationPrivate::setActiveWindow(&topArea); QMdiSubWindow *expectedFocusWindow = nestedWorkspace->subWindowList().last(); QVERIFY(expectedFocusWindow); QVERIFY(expectedFocusWindow->widget()); @@ -1251,7 +1230,6 @@ void tst_QMdiSubWindow::restoreFocusOverCreation() subWidget1->m_lineEdit2->setFocus(); subWindow1->show(); mdiArea.show(); - QApplication::setActiveWindow(&mdiArea); QVERIFY(QTest::qWaitForWindowActive(&mdiArea)); QCOMPARE(QApplication::focusWidget(), subWidget1->m_lineEdit2); @@ -1279,9 +1257,9 @@ void tst_QMdiSubWindow::changeFocusWithTab() mdiArea.setWindowTitle(QLatin1String(QTest::currentTestFunction())); mdiArea.addSubWindow(widget); mdiArea.show(); - QCOMPARE(mdiArea.subWindowList().count(), 1); + QCOMPARE(mdiArea.subWindowList().size(), 1); - QApplication::setActiveWindow(&mdiArea); + QApplicationPrivate::setActiveWindow(&mdiArea); QCOMPARE(QApplication::focusWidget(), static_cast<QWidget *>(firstLineEdit)); // Next @@ -1361,7 +1339,7 @@ void tst_QMdiSubWindow::closeEvent() QVERIFY(window->close()); QCOMPARE(closeSpy.count(), 3); - QCOMPARE(mdiArea.subWindowList().count(), 0); + QCOMPARE(mdiArea.subWindowList().size(), 0); } // There exists more tests in QMdiArea which covers window title support @@ -1396,7 +1374,7 @@ void tst_QMdiSubWindow::setWindowTitle() // other widgets which are not real top-level widgets). QCOMPARE(window->windowTitle(), expectedWindowTitle); - textEdit->setWindowModified(true);; + textEdit->setWindowModified(true); expectedWindowTitle = QLatin1String("Override child title"); window->setWindowTitle(expectedWindowTitle); QVERIFY(window->isWindowModified()); @@ -1569,9 +1547,6 @@ void tst_QMdiSubWindow::hideAndShow() #if !defined (Q_OS_DARWIN) QVERIFY(menuBar->cornerWidget(Qt::TopRightCorner)); -#if defined Q_OS_QNX - QEXPECT_FAIL("", "QTBUG-38231", Abort); -#endif QVERIFY(subWindow->maximizedButtonsWidget()); QVERIFY(subWindow->maximizedSystemMenuIconWidget()); QCOMPARE(menuBar->cornerWidget(Qt::TopRightCorner), subWindow->maximizedButtonsWidget()); @@ -1802,9 +1777,6 @@ void tst_QMdiSubWindow::replaceMenuBarWhileMaximized() QCoreApplication::processEvents(); -#if defined Q_OS_QNX - QEXPECT_FAIL("", "QTBUG-38231", Abort); -#endif QVERIFY(subWindow->maximizedButtonsWidget()); QVERIFY(subWindow->maximizedSystemMenuIconWidget()); QCOMPARE(menuBar1->cornerWidget(Qt::TopLeftCorner), subWindow->maximizedSystemMenuIconWidget()); @@ -1896,7 +1868,6 @@ void tst_QMdiSubWindow::closeOnDoubleClick() void tst_QMdiSubWindow::setFont() { - QSKIP("This test function is unstable in CI, please see QTBUG-22544"); QMdiArea mdiArea; mdiArea.setWindowTitle(QLatin1String(QTest::currentTestFunction())); QMdiSubWindow *subWindow = mdiArea.addSubWindow(new TestPushButton(QLatin1String("test"))); @@ -1982,7 +1953,6 @@ void tst_QMdiSubWindow::task_182852() mainWindow.setCentralWidget(workspace); mainWindow.show(); mainWindow.menuBar()->setVisible(true); - QApplication::setActiveWindow(&mainWindow); if (mainWindow.menuBar()->isNativeMenuBar()) return; // The main window's title is not overwritten if we have a native menubar (macOS, Unity etc.) @@ -2132,7 +2102,7 @@ void tst_QMdiSubWindow::styleChange() // subWindowActivated should NOT be activated by a style change, // even if internally QMdiSubWindow un-minimizes subwindows temporarily. - QCOMPARE(spy.count(), 0); + QCOMPARE(spy.size(), 0); } void tst_QMdiSubWindow::testFullScreenState() @@ -2171,6 +2141,36 @@ void tst_QMdiSubWindow::testRemoveBaseWidget() delete widget1; } +void tst_QMdiSubWindow::testRespectMinimumSize() // QTBUG-100494 +{ + QMdiArea mdiArea; + mdiArea.resize(400, 400); + mdiArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); + mdiArea.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + + auto vlay = new QVBoxLayout; + vlay->addWidget(new QPushButton(QLatin1String("btn1-1"))); + vlay->addSpacerItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); + vlay->addWidget(new QPushButton(QLatin1String("btn1-2"))); + auto w1 = new QWidget; + w1->setLayout(vlay); + w1->resize(300, 200); + w1->setMinimumSize(200, 150); + auto sw = new QMdiSubWindow; + sw->setWidget(w1); + sw->resize(w1->size()); + mdiArea.addSubWindow(sw); + sw->showMaximized(); + + mdiArea.show(); + QVERIFY(QTest::qWaitForWindowExposed(&mdiArea)); + QVERIFY(!mdiArea.horizontalScrollBar()->isVisible()); + QVERIFY(!mdiArea.verticalScrollBar()->isVisible()); + mdiArea.resize(150, 100); + QTRY_VERIFY(mdiArea.horizontalScrollBar()->isVisible()); + QTRY_VERIFY(mdiArea.verticalScrollBar()->isVisible()); +} + QTEST_MAIN(tst_QMdiSubWindow) #include "tst_qmdisubwindow.moc" |