tests/auto/qwidget/tst_qwidget.cpp
branchRCL_3
changeset 8 3f74d0d4af4c
parent 5 d3bac044e0f0
equal deleted inserted replaced
6:dee5afe5301f 8:3f74d0d4af4c
   248 #ifdef Q_OS_SYMBIAN
   248 #ifdef Q_OS_SYMBIAN
   249     void reparentCausesChildWinIdChange();
   249     void reparentCausesChildWinIdChange();
   250 #else
   250 #else
   251     void persistentWinId();
   251     void persistentWinId();
   252 #endif
   252 #endif
       
   253     void showNativeChild();
   253     void qobject_castInDestroyedSlot();
   254     void qobject_castInDestroyedSlot();
   254 
   255 
   255     void showHideEvent_data();
   256     void showHideEvent_data();
   256     void showHideEvent();
   257     void showHideEvent();
   257 
   258 
   389 
   390 
   390     void openModal_taskQTBUG_5804();
   391     void openModal_taskQTBUG_5804();
   391 
   392 
   392 #ifdef Q_OS_SYMBIAN
   393 #ifdef Q_OS_SYMBIAN
   393     void cbaVisibility();
   394     void cbaVisibility();
       
   395     void fullScreenWindowModeTransitions();
       
   396     void maximizedWindowModeTransitions();
       
   397     void minimizedWindowModeTransitions();
       
   398     void normalWindowModeTransitions();
   394 #endif
   399 #endif
   395 
   400 
   396     void focusProxyAndInputMethods();
   401     void focusProxyAndInputMethods();
   397     void scrollWithoutBackingStore();
   402     void scrollWithoutBackingStore();
       
   403 
       
   404     void taskQTBUG_7532_tabOrderWithFocusProxy();
       
   405     void movedAndResizedAttributes();
   398 
   406 
   399 private:
   407 private:
   400     bool ensureScreenSize(int width, int height);
   408     bool ensureScreenSize(int width, int height);
   401     QWidget *testWidget;
   409     QWidget *testWidget;
   402 };
   410 };
  4578 
  4586 
  4579     delete parent;
  4587     delete parent;
  4580 }
  4588 }
  4581 #endif // Q_OS_SYMBIAN
  4589 #endif // Q_OS_SYMBIAN
  4582 
  4590 
       
  4591 void tst_QWidget::showNativeChild()
       
  4592 {
       
  4593     QWidget topLevel;
       
  4594     topLevel.setGeometry(0, 0, 100, 100);
       
  4595     QWidget child(&topLevel);
       
  4596     child.winId();
       
  4597     topLevel.show();
       
  4598     QTest::qWaitForWindowShown(&topLevel);
       
  4599 }
       
  4600 
  4583 class ShowHideEventWidget : public QWidget
  4601 class ShowHideEventWidget : public QWidget
  4584 {
  4602 {
  4585 public:
  4603 public:
  4586     int numberOfShowEvents, numberOfHideEvents;
  4604     int numberOfShowEvents, numberOfHideEvents;
  4587 
  4605 
  8810 #ifdef Q_WS_X11
  8828 #ifdef Q_WS_X11
  8811     qt_x11_wait_for_window_manager(&label);
  8829     qt_x11_wait_for_window_manager(&label);
  8812 #endif
  8830 #endif
  8813     QTest::qWait(200);
  8831     QTest::qWait(200);
  8814 
  8832 
  8815     QPixmap widgetSnapshot = QPixmap::grabWindow(label.winId());
  8833     QPixmap widgetSnapshot;
       
  8834 
       
  8835 #ifdef Q_WS_WIN
       
  8836     QWidget *desktopWidget = QApplication::desktop()->screen(0);
       
  8837     if (QSysInfo::windowsVersion() >= QSysInfo::WV_VISTA)
       
  8838         widgetSnapshot = QPixmap::grabWindow(desktopWidget->winId(), 0,0, label.width(), label.height());
       
  8839     else
       
  8840 #endif
       
  8841         widgetSnapshot = QPixmap::grabWindow(label.winId());
  8816     QImage actual = widgetSnapshot.toImage().convertToFormat(QImage::Format_RGB32);
  8842     QImage actual = widgetSnapshot.toImage().convertToFormat(QImage::Format_RGB32);
  8817     QImage expected = pm.toImage().convertToFormat(QImage::Format_RGB32);
  8843     QImage expected = pm.toImage().convertToFormat(QImage::Format_RGB32);
  8818     QCOMPARE(actual.size(),expected.size());
  8844     QCOMPARE(actual.size(),expected.size());
  8819     QCOMPARE(actual,expected);
  8845     QCOMPARE(actual,expected);
  8820 }
  8846 }
  9685     CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
  9711     CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
  9686     QVERIFY(statusPane->IsVisible());
  9712     QVERIFY(statusPane->IsVisible());
  9687     CEikButtonGroupContainer* buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
  9713     CEikButtonGroupContainer* buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
  9688     QVERIFY(buttonGroup->IsVisible());
  9714     QVERIFY(buttonGroup->IsVisible());
  9689 }
  9715 }
       
  9716 
       
  9717 void tst_QWidget::fullScreenWindowModeTransitions()
       
  9718 {
       
  9719     QWidget widget;
       
  9720     QVBoxLayout *layout = new QVBoxLayout;
       
  9721     QPushButton *button = new QPushButton("test Button");
       
  9722     layout->addWidget(button);
       
  9723     widget.setLayout(layout);
       
  9724     widget.show();
       
  9725 
       
  9726     const QRect normalGeometry = widget.normalGeometry();
       
  9727     const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
       
  9728     const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
       
  9729     CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
       
  9730     CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
       
  9731 
       
  9732     //Enter
       
  9733     widget.showNormal();
       
  9734     widget.showFullScreen();
       
  9735     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9736     QVERIFY(!buttonGroup->IsVisible());
       
  9737     QVERIFY(!statusPane->IsVisible());
       
  9738 
       
  9739     widget.showMaximized();
       
  9740     widget.showFullScreen();
       
  9741     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9742     QVERIFY(!buttonGroup->IsVisible());
       
  9743     QVERIFY(!statusPane->IsVisible());
       
  9744 
       
  9745     widget.showMinimized();
       
  9746     widget.showFullScreen();
       
  9747     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9748     QVERIFY(!buttonGroup->IsVisible());
       
  9749     QVERIFY(!statusPane->IsVisible());
       
  9750 
       
  9751     //Exit
       
  9752     widget.showFullScreen();
       
  9753     widget.showNormal();
       
  9754     QCOMPARE(widget.geometry(), normalGeometry);
       
  9755     QVERIFY(buttonGroup->IsVisible());
       
  9756     QVERIFY(statusPane->IsVisible());
       
  9757 
       
  9758     widget.showFullScreen();
       
  9759     widget.showMaximized();
       
  9760     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9761     QVERIFY(buttonGroup->IsVisible());
       
  9762     QVERIFY(statusPane->IsVisible());
       
  9763 
       
  9764     widget.showFullScreen();
       
  9765     widget.showMinimized();
       
  9766     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9767     QVERIFY(!buttonGroup->IsVisible());
       
  9768     QVERIFY(!statusPane->IsVisible());
       
  9769 }
       
  9770 
       
  9771 void tst_QWidget::maximizedWindowModeTransitions()
       
  9772 {
       
  9773     QWidget widget;
       
  9774     QVBoxLayout *layout = new QVBoxLayout;
       
  9775     QPushButton *button = new QPushButton("test Button");
       
  9776     layout->addWidget(button);
       
  9777     widget.setLayout(layout);
       
  9778     widget.show();
       
  9779 
       
  9780     const QRect normalGeometry = widget.normalGeometry();
       
  9781     const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
       
  9782     const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
       
  9783     CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
       
  9784     CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
       
  9785 
       
  9786     //Enter
       
  9787     widget.showNormal();
       
  9788     widget.showMaximized();
       
  9789     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9790     QVERIFY(buttonGroup->IsVisible());
       
  9791     QVERIFY(statusPane->IsVisible());
       
  9792 
       
  9793     widget.showFullScreen();
       
  9794     widget.showMaximized();
       
  9795     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9796     QVERIFY(buttonGroup->IsVisible());
       
  9797     QVERIFY(statusPane->IsVisible());
       
  9798 
       
  9799     widget.showMinimized();
       
  9800     widget.showMaximized();
       
  9801     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9802     QVERIFY(buttonGroup->IsVisible());
       
  9803     QVERIFY(statusPane->IsVisible());
       
  9804 
       
  9805     //Exit
       
  9806     widget.showMaximized();
       
  9807     widget.showNormal();
       
  9808     QCOMPARE(widget.geometry(), normalGeometry);
       
  9809     QVERIFY(buttonGroup->IsVisible());
       
  9810     QVERIFY(statusPane->IsVisible());
       
  9811 
       
  9812     widget.showMaximized();
       
  9813     widget.showFullScreen();
       
  9814     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9815     QVERIFY(!buttonGroup->IsVisible());
       
  9816     QVERIFY(!statusPane->IsVisible());
       
  9817 
       
  9818     widget.showMaximized();
       
  9819     widget.showMinimized();
       
  9820     // Since showMinimized hides window decoration availableGeometry gives different value
       
  9821     // than with decoration visible. Altual size does not really matter since widget is invisible.
       
  9822     QCOMPARE(widget.geometry(), qApp->desktop()->availableGeometry(&widget));
       
  9823     QVERIFY(!buttonGroup->IsVisible());
       
  9824     QVERIFY(!statusPane->IsVisible());
       
  9825 }
       
  9826 
       
  9827 void tst_QWidget::minimizedWindowModeTransitions()
       
  9828 {
       
  9829     QWidget widget;
       
  9830     QVBoxLayout *layout = new QVBoxLayout;
       
  9831     QPushButton *button = new QPushButton("test Button");
       
  9832     layout->addWidget(button);
       
  9833     widget.setLayout(layout);
       
  9834     widget.show();
       
  9835 
       
  9836     const QRect normalGeometry = widget.normalGeometry();
       
  9837     const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
       
  9838     const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
       
  9839     CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
       
  9840     CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
       
  9841 
       
  9842     //Enter
       
  9843     widget.showNormal();
       
  9844     widget.showMinimized();
       
  9845     QCOMPARE(widget.geometry(), normalGeometry);
       
  9846     QVERIFY(!buttonGroup->IsVisible());
       
  9847     QVERIFY(!statusPane->IsVisible());
       
  9848 
       
  9849     widget.showFullScreen();
       
  9850     widget.showMinimized();
       
  9851     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9852     QVERIFY(!buttonGroup->IsVisible());
       
  9853     QVERIFY(!statusPane->IsVisible());
       
  9854 
       
  9855     widget.showMaximized();
       
  9856     widget.showMinimized();
       
  9857     // Since showMinimized hides window decoration availableGeometry gives different value
       
  9858     // than with decoration visible. Altual size does not really matter since widget is invisible.
       
  9859     QCOMPARE(widget.geometry(), qApp->desktop()->availableGeometry(&widget));
       
  9860     QVERIFY(!buttonGroup->IsVisible());
       
  9861     QVERIFY(!statusPane->IsVisible());
       
  9862 
       
  9863     //Exit
       
  9864     widget.showMinimized();
       
  9865     widget.showNormal();
       
  9866     QCOMPARE(widget.geometry(), normalGeometry);
       
  9867     QVERIFY(buttonGroup->IsVisible());
       
  9868     QVERIFY(statusPane->IsVisible());
       
  9869 
       
  9870     widget.showMinimized();
       
  9871     widget.showFullScreen();
       
  9872     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9873     QVERIFY(!buttonGroup->IsVisible());
       
  9874     QVERIFY(!statusPane->IsVisible());
       
  9875 
       
  9876     widget.showMinimized();
       
  9877     widget.showMaximized();
       
  9878     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9879     QVERIFY(buttonGroup->IsVisible());
       
  9880     QVERIFY(statusPane->IsVisible());
       
  9881 }
       
  9882 
       
  9883 void tst_QWidget::normalWindowModeTransitions()
       
  9884 {
       
  9885     QWidget widget;
       
  9886     QVBoxLayout *layout = new QVBoxLayout;
       
  9887     QPushButton *button = new QPushButton("test Button");
       
  9888     layout->addWidget(button);
       
  9889     widget.setLayout(layout);
       
  9890     widget.show();
       
  9891 
       
  9892     const QRect normalGeometry = widget.normalGeometry();
       
  9893     const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
       
  9894     const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
       
  9895     CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
       
  9896     CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
       
  9897 
       
  9898     //Enter
       
  9899     widget.showMaximized();
       
  9900     widget.showNormal();
       
  9901     QCOMPARE(widget.geometry(), normalGeometry);
       
  9902     QVERIFY(buttonGroup->IsVisible());
       
  9903     QVERIFY(statusPane->IsVisible());
       
  9904 
       
  9905     widget.showFullScreen();
       
  9906     widget.showNormal();
       
  9907     QCOMPARE(widget.geometry(), normalGeometry);
       
  9908     QVERIFY(buttonGroup->IsVisible());
       
  9909     QVERIFY(statusPane->IsVisible());
       
  9910 
       
  9911     widget.showMinimized();
       
  9912     widget.showNormal();
       
  9913     QCOMPARE(widget.geometry(), normalGeometry);
       
  9914     QVERIFY(buttonGroup->IsVisible());
       
  9915     QVERIFY(statusPane->IsVisible());
       
  9916 
       
  9917     //Exit
       
  9918     widget.showNormal();
       
  9919     widget.showMaximized();
       
  9920     QCOMPARE(widget.geometry(), maximumScreenGeometry);
       
  9921     QVERIFY(buttonGroup->IsVisible());
       
  9922     QVERIFY(statusPane->IsVisible());
       
  9923 
       
  9924     widget.showNormal();
       
  9925     widget.showFullScreen();
       
  9926     QCOMPARE(widget.geometry(), fullScreenGeometry);
       
  9927     QVERIFY(!buttonGroup->IsVisible());
       
  9928     QVERIFY(!statusPane->IsVisible());
       
  9929 
       
  9930     widget.showNormal();
       
  9931     widget.showMinimized();
       
  9932     QCOMPARE(widget.geometry(), normalGeometry);
       
  9933     QVERIFY(!buttonGroup->IsVisible());
       
  9934     QVERIFY(!statusPane->IsVisible());
       
  9935 }
  9690 #endif
  9936 #endif
  9691 
  9937 
  9692 class InputContextTester : public QInputContext
  9938 class InputContextTester : public QInputContext
  9693 {
  9939 {
  9694     Q_OBJECT
  9940     Q_OBJECT
  9781     QCOMPARE(child.pos(),QPoint(25,25));
 10027     QCOMPARE(child.pos(),QPoint(25,25));
  9782     scrollable.enableBackingStore();
 10028     scrollable.enableBackingStore();
  9783     QCOMPARE(child.pos(),QPoint(25,25));
 10029     QCOMPARE(child.pos(),QPoint(25,25));
  9784 }
 10030 }
  9785 
 10031 
       
 10032 void tst_QWidget::taskQTBUG_7532_tabOrderWithFocusProxy()
       
 10033 {
       
 10034     QWidget w;
       
 10035     w.setFocusPolicy(Qt::TabFocus);
       
 10036     QWidget *fp = new QWidget(&w);
       
 10037     fp->setFocusPolicy(Qt::TabFocus);
       
 10038     w.setFocusProxy(fp);
       
 10039     QWidget::setTabOrder(&w, fp);
       
 10040 
       
 10041     // No Q_ASSERT, then it's allright.
       
 10042 }
       
 10043 
       
 10044 void tst_QWidget::movedAndResizedAttributes()
       
 10045 {
       
 10046 #if defined (Q_OS_MAC) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
       
 10047     QEXPECT_FAIL("", "FixMe, QTBUG-8941 and QTBUG-8977", Abort);
       
 10048     QVERIFY(false);
       
 10049 #else
       
 10050     QWidget w;
       
 10051     w.show();
       
 10052 
       
 10053     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10054     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10055 
       
 10056     w.setWindowState(Qt::WindowFullScreen);
       
 10057 
       
 10058     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10059     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10060 
       
 10061     w.setWindowState(Qt::WindowMaximized);
       
 10062 
       
 10063     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10064     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10065 
       
 10066     w.setWindowState(Qt::WindowMinimized);
       
 10067 
       
 10068     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10069     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10070 
       
 10071     w.showNormal();
       
 10072 
       
 10073     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10074     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10075 
       
 10076     w.showMaximized();
       
 10077 
       
 10078     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10079     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10080 
       
 10081     w.showFullScreen();
       
 10082 
       
 10083     QVERIFY(!w.testAttribute(Qt::WA_Moved));
       
 10084     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10085 
       
 10086     w.showNormal();
       
 10087     w.move(10,10);
       
 10088     QVERIFY(w.testAttribute(Qt::WA_Moved));
       
 10089 #if defined(Q_OS_WIN)
       
 10090     QEXPECT_FAIL("", "FixMe, QTBUG-8911", Abort);
       
 10091 #endif
       
 10092     QVERIFY(!w.testAttribute(Qt::WA_Resized));
       
 10093 
       
 10094     w.resize(100, 100);
       
 10095     QVERIFY(w.testAttribute(Qt::WA_Moved));
       
 10096     QVERIFY(w.testAttribute(Qt::WA_Resized));
       
 10097 #endif
       
 10098 }
       
 10099 
  9786 QTEST_MAIN(tst_QWidget)
 10100 QTEST_MAIN(tst_QWidget)
  9787 #include "tst_qwidget.moc"
 10101 #include "tst_qwidget.moc"