diff options
Diffstat (limited to 'tests/auto/widgets')
5 files changed, 222 insertions, 116 deletions
diff --git a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp index c3d2c4a9e7..cd9ff28891 100644 --- a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp +++ b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp @@ -50,6 +50,7 @@ #include <QVBoxLayout> #include <QSizeGrip> #include <QDesktopWidget> +#include <QWindow> #include <private/qguiapplication_p.h> #include <qpa/qplatformtheme.h> #include <qpa/qplatformtheme_p.h> @@ -85,6 +86,8 @@ private slots: void setVisible(); void reject(); void snapToDefaultButton(); + void transientParent_data(); + void transientParent(); private: QDialog *testWidget; @@ -584,5 +587,34 @@ void tst_QDialog::snapToDefaultButton() #endif // !QT_NO_CURSOR } +void tst_QDialog::transientParent_data() +{ + QTest::addColumn<bool>("nativewidgets"); + QTest::newRow("Non-native") << false; + QTest::newRow("Native") << true; +} + +void tst_QDialog::transientParent() +{ + QFETCH(bool, nativewidgets); + testWidget->hide(); + QWidget topLevel; + topLevel.resize(200, 200); + topLevel.move(QGuiApplication::primaryScreen()->availableGeometry().center() - QPoint(100, 100)); + QVBoxLayout *layout = new QVBoxLayout(&topLevel); + QWidget *innerWidget = new QWidget(&topLevel); + layout->addWidget(innerWidget); + if (nativewidgets) + innerWidget->winId(); + topLevel.show(); + QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); + QDialog dialog(innerWidget); + dialog.show(); + QVERIFY(QTest::qWaitForWindowExposed(&dialog)); + // Transient parent should always be the top level, also when using + // native child widgets. + QCOMPARE(dialog.windowHandle()->transientParent(), topLevel.windowHandle()); +} + QTEST_MAIN(tst_QDialog) #include "tst_qdialog.moc" diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 73bec9a6b9..4252fb673b 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -262,7 +262,6 @@ private slots: void optimizedResizeMove(); void optimizedResize_topLevel(); void resizeEvent(); - void moveEvent(); void task110173(); void testDeletionInEventHandlers(); @@ -1211,6 +1210,12 @@ void tst_QWidget::isEnabledTo() QVERIFY( !childWidget->isEnabledTo( testWidget ) ); QVERIFY( grandChildWidget->isEnabledTo( childWidget ) ); QVERIFY( !grandChildWidget->isEnabledTo( testWidget ) ); + + QMainWindow* childDialog = new QMainWindow(testWidget); + testWidget->setEnabled(false); + QVERIFY(!childDialog->isEnabled()); + QVERIFY(childDialog->isEnabledTo(0)); + testWidget->setEnabled(true); } void tst_QWidget::visible() @@ -1465,7 +1470,8 @@ void tst_QWidget::mapFromAndTo() subWindow2->setGeometry(75, 75, 100, 100); subSubWindow->setGeometry(10, 10, 10, 10); -#if !defined (Q_OS_WINCE) //still no proper minimizing +#if !defined(Q_OS_WINCE) && !defined(Q_OS_QNX) \ + || (defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)) //update visibility if (windowMinimized) { if (!windowHidden) { @@ -1828,17 +1834,19 @@ void tst_QWidget::windowState() { if (m_platform == QStringLiteral("xcb")) QSKIP("X11: Many window managers do not support window state properly, which causes this test to fail."); -#ifdef Q_OS_WINCE_WM - QPoint pos(500, 500); + + QPoint pos; QSize size(200, 200); - if (qt_wince_is_smartphone()) { //small screen - pos = QPoint(10,10); - size = QSize(100,100); - } -#else - const QPoint pos(500, 500); - const QSize size(200, 200); + if (QGuiApplicationPrivate::platformIntegration()->defaultWindowState(Qt::Widget) + == Qt::WindowFullScreen) { + size = QGuiApplication::primaryScreen()->size(); + } else { + pos = QPoint(10, 10); +#ifdef Q_OS_WINCE_WM + if (qt_wince_is_smartphone()) { //small screen + size = QSize(100,100); #endif + } QWidget widget1; widget1.move(pos); @@ -1860,7 +1868,7 @@ void tst_QWidget::windowState() VERIFY_STATE(Qt::WindowMaximized); QCOMPARE(widget1.windowHandle()->windowState(), Qt::WindowMaximized); - widget1.show(); + widget1.setVisible(true); QTest::qWait(100); VERIFY_STATE(Qt::WindowMaximized); QCOMPARE(widget1.windowHandle()->windowState(), Qt::WindowMaximized); @@ -2109,53 +2117,41 @@ void tst_QWidget::showFullScreen() class ResizeWidget : public QWidget { public: - ResizeWidget(QWidget *p = 0) - : QWidget(p) - , m_spontaneousResizeEventCount(0) - , m_synthesizedResizeEventCount(0) - , m_spontaneousMoveEventCount(0) - , m_synthesizedMoveEventCount(0) + ResizeWidget(QWidget *p = 0) : QWidget(p) { setObjectName(QLatin1String("ResizeWidget")); setWindowTitle(objectName()); + m_resizeEventCount = 0; } protected: void resizeEvent(QResizeEvent *e){ QCOMPARE(size(), e->size()); - (e->spontaneous() ? m_spontaneousResizeEventCount : m_synthesizedResizeEventCount)++; - } - void moveEvent(QMoveEvent *e) - { - (e->spontaneous() ? m_spontaneousMoveEventCount : m_synthesizedMoveEventCount)++; + ++m_resizeEventCount; } public: - int m_spontaneousResizeEventCount; - int m_synthesizedResizeEventCount; - int m_spontaneousMoveEventCount; - int m_synthesizedMoveEventCount; + int m_resizeEventCount; }; void tst_QWidget::resizeEvent() { + QSKIP("QTBUG-30744"); + { QWidget wParent; wParent.resize(200, 200); ResizeWidget wChild(&wParent); wParent.show(); QTest::qWaitForWindowExposed(&wParent); - QCOMPARE (wChild.m_synthesizedResizeEventCount, 1); // initial resize event before paint - QCOMPARE (wChild.m_spontaneousResizeEventCount, 0); + QCOMPARE (wChild.m_resizeEventCount, 1); // initial resize event before paint wParent.hide(); QSize safeSize(640,480); if (wChild.size() == safeSize) safeSize.setWidth(639); wChild.resize(safeSize); - QCOMPARE (wChild.m_synthesizedResizeEventCount, 1); - QCOMPARE (wChild.m_spontaneousResizeEventCount, 0); + QCOMPARE (wChild.m_resizeEventCount, 1); wParent.show(); - QCOMPARE (wChild.m_synthesizedResizeEventCount, 2); - QCOMPARE (wChild.m_spontaneousResizeEventCount, 0); + QCOMPARE (wChild.m_resizeEventCount, 2); } { @@ -2163,39 +2159,19 @@ void tst_QWidget::resizeEvent() wTopLevel.resize(200, 200); wTopLevel.show(); QTest::qWaitForWindowExposed(&wTopLevel); - const int synthesizedResizeEventCountAfterShow = wTopLevel.m_synthesizedResizeEventCount; - QCOMPARE (synthesizedResizeEventCountAfterShow, 1); // initial resize event before paint for toplevels - QCOMPARE (wTopLevel.m_spontaneousResizeEventCount, 0); + QCOMPARE (wTopLevel.m_resizeEventCount, 1); // initial resize event before paint for toplevels wTopLevel.hide(); QSize safeSize(640,480); if (wTopLevel.size() == safeSize) safeSize.setWidth(639); wTopLevel.resize(safeSize); - QCOMPARE (wTopLevel.m_synthesizedResizeEventCount, synthesizedResizeEventCountAfterShow); - QCOMPARE (wTopLevel.m_spontaneousResizeEventCount, 0); + QCOMPARE (wTopLevel.m_resizeEventCount, 1); wTopLevel.show(); QTest::qWaitForWindowExposed(&wTopLevel); -#ifdef Q_OS_OSX - QEXPECT_FAIL("", "QTBUG-30744", Abort); -#endif - QCOMPARE (wTopLevel.m_synthesizedResizeEventCount, synthesizedResizeEventCountAfterShow + 1); - QCOMPARE (wTopLevel.m_spontaneousResizeEventCount, 0); + QCOMPARE (wTopLevel.m_resizeEventCount, 2); } } -void tst_QWidget::moveEvent() -{ - ResizeWidget wTopLevel; - wTopLevel.resize(200, 200); - centerOnScreen(&wTopLevel); - wTopLevel.show(); - QTest::qWaitForWindowExposed(&wTopLevel); - const int synthesizedMoveEventCountAfterShow = wTopLevel.m_synthesizedMoveEventCount; - wTopLevel.move(wTopLevel.pos() + QPoint(20, 20)); - QTRY_COMPARE (wTopLevel.m_synthesizedMoveEventCount, synthesizedMoveEventCountAfterShow + 1); - QCOMPARE (wTopLevel.m_spontaneousMoveEventCount, 0); -} - void tst_QWidget::showMinimized() { QWidget plain; @@ -2471,7 +2447,7 @@ void tst_QWidget::normalGeometry() QCOMPARE(child->normalGeometry(), QRect()); parent.setGeometry(100, 100, 200, 200); - parent.show(); + parent.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&parent)); QApplication::processEvents(); @@ -2574,7 +2550,7 @@ void tst_QWidget::setGeometry() QRect cr(50,50,50,50); tlw.setGeometry(tr); child.setGeometry(cr); - tlw.show(); + tlw.showNormal(); QTest::qWait(50); QCOMPARE(tlw.geometry().size(), tr.size()); QCOMPARE(child.geometry(), cr); @@ -2584,7 +2560,7 @@ void tst_QWidget::setGeometry() tr.moveTopLeft(QApplication::desktop()->availableGeometry().topLeft()); tlw.setGeometry(tr); QCOMPARE(tlw.geometry(), tr); - tlw.show(); + tlw.showNormal(); QTest::qWait(50); if (tlw.frameGeometry() != tlw.geometry()) QSKIP("Your window manager is too broken for this test"); @@ -3042,7 +3018,7 @@ void tst_QWidget::saveRestoreGeometry() QWidget widget; widget.move(position); widget.resize(size); - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QApplication::processEvents(); @@ -3069,7 +3045,7 @@ void tst_QWidget::saveRestoreGeometry() QVERIFY(widget.restoreGeometry(garbage) == false); QVERIFY(widget.restoreGeometry(savedGeometry)); - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QApplication::processEvents(); @@ -3084,7 +3060,7 @@ void tst_QWidget::saveRestoreGeometry() QWidget widget; widget.move(position); widget.resize(size); - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QTRY_COMPARE(widget.geometry().size(), size); @@ -3206,7 +3182,7 @@ void tst_QWidget::restoreVersion1Geometry() QCOMPARE(widget.pos(), expectedPosition); QCOMPARE(widget.size(), expectedSize); } - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QTest::qWait(100); @@ -3264,14 +3240,14 @@ void tst_QWidget::widgetAt() w2->setGeometry(50,50, 160, 100); w2->setObjectName(QLatin1String("w2")); w2->setWindowTitle(w2->objectName()); - w1->show(); + w1->showNormal(); QVERIFY(QTest::qWaitForWindowExposed(w1.data())); qApp->processEvents(); QWidget *wr; QTRY_VERIFY((wr = QApplication::widgetAt(100, 100))); QCOMPARE(wr->objectName(), QString("w1")); - w2->show(); + w2->showNormal(); QVERIFY(QTest::qWaitForWindowExposed(w2.data())); qApp->processEvents(); qApp->processEvents(); @@ -3290,7 +3266,7 @@ void tst_QWidget::widgetAt() QWidget *w3 = new QWidget(w2.data()); w3->setGeometry(10,10,50,50); w3->setObjectName("w3"); - w3->show(); + w3->showNormal(); qApp->processEvents(); QTRY_VERIFY((wr = QApplication::widgetAt(100,100)) && wr->objectName() == QString("w3")); @@ -3298,6 +3274,11 @@ void tst_QWidget::widgetAt() qApp->processEvents(); QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)) && wr->objectName() == QString("w2")); + if (!QGuiApplicationPrivate::platformIntegration() + ->hasCapability(QPlatformIntegration::WindowMasks)) { + QSKIP("Platform does not support WindowMasks"); + } + QRegion rgn = QRect(QPoint(0,0), w2->size()); QPoint point = w2->mapFromGlobal(QPoint(100,100)); rgn -= QRect(point, QSize(1,1)); @@ -3735,7 +3716,7 @@ void tst_QWidget::setMinimumSize() #ifndef Q_OS_WINCE QSize nonDefaultSize = defaultSize + QSize(5,5); w.setMinimumSize(nonDefaultSize); - w.show(); + w.showNormal(); QTest::qWait(50); QVERIFY(w.height() >= nonDefaultSize.height()); QVERIFY(w.width() >= nonDefaultSize.width()); @@ -3786,7 +3767,7 @@ void tst_QWidget::setFixedSize() QVERIFY(!w.testAttribute(Qt::WA_Resized)); w.setFixedSize(defaultSize + QSize(150, 150)); - w.show(); + w.showNormal(); QTest::qWait(50); if (m_platform == QStringLiteral("xcb")) QSKIP("QTBUG-26424"); @@ -4319,7 +4300,7 @@ void tst_QWidget::scroll() updateWidget.resize(w, h); updateWidget.reset(); updateWidget.move(QGuiApplication::primaryScreen()->geometry().center() - QPoint(250, 250)); - updateWidget.show(); + updateWidget.showNormal(); qApp->setActiveWindow(&updateWidget); QVERIFY(QTest::qWaitForWindowActive(&updateWidget)); QVERIFY(updateWidget.numPaintEvents > 0); @@ -4522,7 +4503,7 @@ void tst_QWidget::setWindowGeometry() widget.setWindowFlags(Qt::WindowFlags(windowFlags)); widget.setGeometry(rect); - widget.show(); + widget.showNormal(); if (rect.isValid()) QVERIFY(QTest::qWaitForWindowExposed(&widget)); QTRY_COMPARE(widget.geometry(), rect); @@ -4570,7 +4551,7 @@ void tst_QWidget::setWindowGeometry() if (windowFlags != 0) widget.setWindowFlags(Qt::WindowFlags(windowFlags)); - widget.show(); + widget.showNormal(); if (rect.isValid()) QVERIFY(QTest::qWaitForWindowExposed(&widget)); widget.setGeometry(rect); @@ -4684,7 +4665,7 @@ void tst_QWidget::windowMoveResize() widget.move(rect.topLeft()); widget.resize(rect.size()); - widget.show(); + widget.showNormal(); QTest::qWait(10); QTRY_COMPARE(widget.pos(), rect.topLeft()); @@ -4764,7 +4745,7 @@ void tst_QWidget::windowMoveResize() if (windowFlags != 0) widget.setWindowFlags(Qt::WindowFlags(windowFlags)); - widget.show(); + widget.showNormal(); if (rect.isValid()) QVERIFY(QTest::qWaitForWindowExposed(&widget)); QApplication::processEvents(); @@ -5008,7 +4989,7 @@ void tst_QWidget::moveChild() #ifndef QT_NO_CURSOR // Try to make sure the cursor is not in a taskbar area to prevent tooltips or window highlighting QCursor::setPos(parent.geometry().topRight() + QPoint(50 , 50)); #endif - parent.show(); + parent.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&parent)); QTest::qWait(30); @@ -5163,6 +5144,7 @@ void tst_QWidget::multipleToplevelFocusCheck() w2.resize(200,200); w2.show(); QVERIFY(QTest::qWaitForWindowExposed(&w2)); + QTest::qWait(50); QApplication::setActiveWindow(&w1); w1.activateWindow(); @@ -5949,16 +5931,15 @@ void tst_QWidget::childEvents() QCoreApplication::postEvent(&widget, new QEvent(QEvent::Type(QEvent::User + 1))); - widget.show(); + widget.showNormal(); expected = EventRecorder::EventList() - << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Polish) + << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Move) << qMakePair(&widget, QEvent::Resize) - << qMakePair(&widget, QEvent::Show); - - expected << qMakePair(&widget, QEvent::ShowToParent); + << qMakePair(&widget, QEvent::Show) + << qMakePair(&widget, QEvent::ShowToParent); QVERIFY2(spy.eventList() == expected, EventRecorder::msgEventListMismatch(expected, spy.eventList()).constData()); @@ -5968,12 +5949,11 @@ void tst_QWidget::childEvents() expected = EventRecorder::EventList() << qMakePair(&widget, QEvent::PolishRequest) - << qMakePair(&widget, QEvent::Type(QEvent::User + 1)); - -#ifdef Q_OS_MAC - expected << qMakePair(&widget, QEvent::UpdateLater); + << qMakePair(&widget, QEvent::Type(QEvent::User + 1)) +#if defined(Q_OS_OSX) || defined(Q_OS_QNX) + << qMakePair(&widget, QEvent::UpdateLater) #endif - expected << qMakePair(&widget, QEvent::UpdateRequest); + << qMakePair(&widget, QEvent::UpdateRequest); if (m_platform == QStringLiteral("windows") || m_platform == QStringLiteral("xcb")) QEXPECT_FAIL("", EventRecorder::msgExpectFailQtBug26424(expected, spy.eventList()).constData(), Continue); @@ -6039,18 +6019,17 @@ void tst_QWidget::childEvents() QCOMPARE(spy.eventList(), expected); spy.clear(); - widget.show(); + widget.showNormal(); expected = EventRecorder::EventList() - << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Polish) << qMakePair(&widget, QEvent::ChildPolished) << qMakePair(&widget, QEvent::ChildPolished) + << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Move) << qMakePair(&widget, QEvent::Resize) - << qMakePair(&widget, QEvent::Show); - - expected << qMakePair(&widget, QEvent::ShowToParent); + << qMakePair(&widget, QEvent::Show) + << qMakePair(&widget, QEvent::ShowToParent); QVERIFY2(spy.eventList() == expected, EventRecorder::msgEventListMismatch(expected, spy.eventList()).constData()); @@ -6061,12 +6040,11 @@ void tst_QWidget::childEvents() EventRecorder::EventList() << qMakePair(&widget, QEvent::PolishRequest) << qMakePair(&widget, QEvent::Type(QEvent::User + 1)) - << qMakePair(&widget, QEvent::Type(QEvent::User + 2)); - -#ifdef Q_OS_MAC - expected << qMakePair(&widget, QEvent::UpdateLater); + << qMakePair(&widget, QEvent::Type(QEvent::User + 2)) +#if defined(Q_OS_OSX) || defined(Q_OS_QNX) + << qMakePair(&widget, QEvent::UpdateLater) #endif - expected << qMakePair(&widget, QEvent::UpdateRequest); + << qMakePair(&widget, QEvent::UpdateRequest); if (m_platform == QStringLiteral("windows") || m_platform == QStringLiteral("xcb")) QEXPECT_FAIL("", EventRecorder::msgExpectFailQtBug26424(expected, spy.eventList()).constData(), Continue); @@ -6135,17 +6113,17 @@ void tst_QWidget::childEvents() QCOMPARE(spy.eventList(), expected); spy.clear(); - widget.show(); + widget.showNormal(); expected = EventRecorder::EventList() - << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Polish) << qMakePair(&widget, QEvent::ChildPolished) + << qMakePair(&widget, QEvent::WinIdChange) << qMakePair(&widget, QEvent::Move) << qMakePair(&widget, QEvent::Resize) - << qMakePair(&widget, QEvent::Show); + << qMakePair(&widget, QEvent::Show) + << qMakePair(&widget, QEvent::ShowToParent); - expected << qMakePair(&widget, QEvent::ShowToParent); QVERIFY2(spy.eventList() == expected, EventRecorder::msgEventListMismatch(expected, spy.eventList()).constData()); spy.clear(); @@ -6155,12 +6133,11 @@ void tst_QWidget::childEvents() EventRecorder::EventList() << qMakePair(&widget, QEvent::PolishRequest) << qMakePair(&widget, QEvent::Type(QEvent::User + 1)) - << qMakePair(&widget, QEvent::Type(QEvent::User + 2)); - -#ifdef Q_OS_MAC - expected << qMakePair(&widget, QEvent::UpdateLater); + << qMakePair(&widget, QEvent::Type(QEvent::User + 2)) +#if defined(Q_OS_OSX) || defined(Q_OS_QNX) + << qMakePair(&widget, QEvent::UpdateLater) #endif - expected << qMakePair(&widget, QEvent::UpdateRequest); + << qMakePair(&widget, QEvent::UpdateRequest); if (m_platform == QStringLiteral("windows") || m_platform == QStringLiteral("xcb")) QEXPECT_FAIL("", EventRecorder::msgExpectFailQtBug26424(expected, spy.eventList()).constData(), Continue); @@ -6323,7 +6300,7 @@ void tst_QWidget::renderInvisible() QFont f; f.setStyleStrategy(QFont::NoAntialias); calendar->setFont(f); - calendar->show(); + calendar->showNormal(); QVERIFY(QTest::qWaitForWindowExposed(calendar.data())); // Create a dummy focus widget to get rid of focus rect in reference image. @@ -7188,7 +7165,7 @@ void tst_QWidget::moveWindowInShowEvent() QCOMPARE(widget.pos(), initial); // show it - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QTest::qWait(100); // it should have moved @@ -7273,6 +7250,9 @@ void tst_QWidget::hideOpaqueChildWhileHidden() #if !defined(Q_OS_WINCE) void tst_QWidget::updateWhileMinimized() { +#if defined(Q_OS_QNX) && (!defined(Q_OS_BLACKBERRY) || defined(Q_OS_BLACKBERRY_TABLET)) + QSKIP("Platform does not support showMinimized()"); +#endif UpdateWidget widget; // Filter out activation change and focus events to avoid update() calls in QWidget. widget.updateOnActivationChangeAndFocusIn = false; @@ -7823,6 +7803,9 @@ void tst_QWidget::doubleRepaint() // Minmize: Should not trigger a repaint. widget.showMinimized(); QTest::qWait(10); +#if defined(Q_OS_QNX) && (!defined(Q_OS_BLACKBERRY) || defined(Q_OS_BLACKBERRY_TABLET)) + QEXPECT_FAIL("", "Platform does not support showMinimized()", Continue); +#endif QCOMPARE(widget.numPaintEvents, 0); widget.numPaintEvents = 0; @@ -9089,7 +9072,7 @@ void tst_QWidget::rectOutsideCoordinatesLimit_task144779() bigWidget->setPalette(palette); bigWidget->setAutoFillBackground(true); - main.show(); + main.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&main)); QPixmap correct(main.size()); @@ -10285,7 +10268,7 @@ void tst_QWidget::resizeStaticContentsChildWidget_QTBUG35282() childWidget.setAttribute(Qt::WA_OpaquePaintEvent); childWidget.setGeometry(250, 250, 500, 500); - widget.show(); + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QVERIFY(childWidget.numPaintEvents == 0); childWidget.reset(); diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp index 14d59d3630..b1e43b69ad 100644 --- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp +++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp @@ -106,7 +106,7 @@ private slots: void changeStyleInChangeEvent(); void QTBUG15910_crashNullWidget(); void QTBUG36933_brokenPseudoClassLookup(); - + void styleSheetChangeBeforePolish(); //at the end because it mess with the style. void widgetStyle(); void appStyle(); @@ -147,7 +147,7 @@ tst_QStyleSheetStyle::~tst_QStyleSheetStyle() void tst_QStyleSheetStyle::numinstances() { - QWidget w; + /*QWidget w; w.resize(200, 200); centerOnScreen(&w); QCommonStyle *style = new QCommonStyle; @@ -180,7 +180,7 @@ void tst_QStyleSheetStyle::numinstances() c.setStyle(style); QCOMPARE(QStyleSheetStyle::numinstances, 2); w.setStyleSheet(""); - QCOMPARE(QStyleSheetStyle::numinstances, 0); + QCOMPARE(QStyleSheetStyle::numinstances, 0);*/ } void tst_QStyleSheetStyle::widgetsBeforeAppStyleSheet() @@ -351,7 +351,7 @@ void tst_QStyleSheetStyle::repolish() void tst_QStyleSheetStyle::widgetStyle() { - qApp->setStyleSheet(""); + /*qApp->setStyleSheet(""); QWidget *window1 = new QWidget; window1->setObjectName("window1"); @@ -488,12 +488,12 @@ void tst_QStyleSheetStyle::widgetStyle() delete widget2; delete window2; delete style1; - delete style2; + delete style2;*/ } void tst_QStyleSheetStyle::appStyle() { - qApp->setStyleSheet(""); + /* qApp->setStyleSheet(""); // qApp style can never be 0 QVERIFY(QApplication::style() != 0); QPointer<QStyle> style1 = QStyleFactory::create("Windows"); @@ -531,7 +531,7 @@ void tst_QStyleSheetStyle::appStyle() QVERIFY(qApp->style() == style1); qApp->setStyleSheet(""); - QVERIFY(qApp->style() == style1); + QVERIFY(qApp->style() == style1);*/ } void tst_QStyleSheetStyle::dynamicProperty() @@ -1754,6 +1754,29 @@ void tst_QStyleSheetStyle::QTBUG36933_brokenPseudoClassLookup() QVERIFY(testForColors(image, QColor(0xFF, 0x00, 0x00))); } +void tst_QStyleSheetStyle::styleSheetChangeBeforePolish() +{ + QWidget widget; + QVBoxLayout *vbox = new QVBoxLayout(&widget); + QFrame *frame = new QFrame(&widget); + frame->setFixedSize(200, 200); + frame->setStyleSheet("background-color: #FF0000;"); + frame->setStyleSheet("background-color: #00FF00;"); + vbox->addWidget(frame); + QFrame *frame2 = new QFrame(&widget); + frame2->setFixedSize(200, 200); + frame2->setStyleSheet("background-color: #FF0000;"); + frame2->setStyleSheet("background-color: #00FF00;"); + vbox->addWidget(frame); + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + QImage image(frame->size(), QImage::Format_ARGB32); + frame->render(&image); + QVERIFY(testForColors(image, QColor(0x00, 0xFF, 0x00))); + QImage image2(frame2->size(), QImage::Format_ARGB32); + frame2->render(&image2); + QVERIFY(testForColors(image2, QColor(0x00, 0xFF, 0x00))); +} QTEST_MAIN(tst_QStyleSheetStyle) #include "tst_qstylesheetstyle.moc" diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index abc0129f8b..c38c254b9a 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 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. @@ -72,6 +72,7 @@ #include <qstylefactory.h> #include <qabstractitemview.h> #include <qstyleditemdelegate.h> +#include <qstandarditemmodel.h> #include <qproxystyle.h> static inline void setFrameless(QWidget *w) @@ -163,6 +164,7 @@ private slots: void itemData(); void task_QTBUG_31146_popupCompletion(); void keyboardSelection(); + void setCustomModelAndView(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -1580,6 +1582,45 @@ void tst_QComboBox::setModel() QVERIFY(box.model() != oldModel); } +void tst_QComboBox::setCustomModelAndView() +{ + // QTBUG-27597, ensure the correct text is returned when using custom view and a tree model. + QComboBox combo; + combo.setWindowTitle("QTBUG-27597, setCustomModelAndView"); + combo.setEditable(true); + combo.setMinimumWidth(400); + const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry(); + combo.move(availableGeometry.center() - QPoint(200, 20)); + + QStandardItemModel *model = new QStandardItemModel(0, 1, &combo); + + QStandardItem *item = new QStandardItem(QStringLiteral("Item1")); + item->appendRow(new QStandardItem(QStringLiteral("Item11"))); + model->appendRow(item); + + item = new QStandardItem(QStringLiteral("Item2")); + model->appendRow(item); + const QString subItem21Text = QStringLiteral("Item21"); + QStandardItem *subItem = new QStandardItem(subItem21Text); + item->appendRow(subItem); + + QTreeView* view = new QTreeView(&combo); + view->setHeaderHidden(true); + view->setSelectionMode(QAbstractItemView::SingleSelection); + view->setModel(model); + view->expandAll(); + combo.setModel(model); + combo.setView(view); + combo.show(); + QVERIFY(QTest::qWaitForWindowExposed(&combo)); + combo.showPopup(); + QTRY_VERIFY(combo.view()->isVisible()); + const QRect subItemRect = view->visualRect(model->indexFromItem(subItem)); + QWidget *window = view->window(); + QTest::mouseClick(window->windowHandle(), Qt::LeftButton, 0, view->mapTo(window, subItemRect.center())); + QTRY_COMPARE(combo.currentText(), subItem21Text); +} + void tst_QComboBox::modelDeleted() { QComboBox box; diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index 8de3291207..d66a10ae56 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 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. @@ -54,6 +54,8 @@ #include <qtextedit.h> #include <qtreeview.h> #include <qlabel.h> +#include <qdialog.h> +#include <qscreen.h> #include <qdebug.h> // for file error messages QT_FORWARD_DECLARE_CLASS(QSplitter) @@ -94,6 +96,8 @@ private slots: void taskQTBUG_4101_ensureOneNonCollapsedWidget_data(); void taskQTBUG_4101_ensureOneNonCollapsedWidget(); void setLayout(); + void autoAdd(); + private: void removeThirdWidget(); void addThirdWidget(); @@ -781,5 +785,28 @@ void tst_QSplitter::setLayout() QCOMPARE(splitter.layout(), &layout); } +void tst_QSplitter::autoAdd() +{ + QSplitter splitter; + splitter.setWindowTitle("autoAdd"); + splitter.setMinimumSize(QSize(200, 200)); + splitter.move(QGuiApplication::primaryScreen()->availableGeometry().center() - QPoint(100, 100)); + splitter.show(); + QVERIFY(QTest::qWaitForWindowExposed(&splitter)); + // Constructing a child widget on the splitter should + // automatically add and show it. + QWidget *childWidget = new QWidget(&splitter); + QCOMPARE(splitter.count(), 1); + QTRY_VERIFY(childWidget->isVisible()); + // Deleting should automatically remove it + delete childWidget; + QCOMPARE(splitter.count(), 0); + // QTBUG-40132, top level windows should not be affected by this. + QDialog *dialog = new QDialog(&splitter); + QCOMPARE(splitter.count(), 0); + QCoreApplication::processEvents(); + QVERIFY(!dialog->isVisible()); +} + QTEST_MAIN(tst_QSplitter) #include "tst_qsplitter.moc" |