summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Manuel Duclos Vergara <carlos.duclos@nokia.com>2010-07-23 15:03:42 (GMT)
committerCarlos Manuel Duclos Vergara <carlos.duclos@nokia.com>2010-07-23 22:51:52 (GMT)
commit725d8e061ededee9a5ddf0914aabd0f6aa2ee741 (patch)
tree7c386849784b096fbec3ab23d73e7979f60cb7bd
parentb0e73713e0142ac1045b4c91c7fe55e8e965b7c2 (diff)
downloadQt-725d8e061ededee9a5ddf0914aabd0f6aa2ee741.zip
Qt-725d8e061ededee9a5ddf0914aabd0f6aa2ee741.tar.gz
Qt-725d8e061ededee9a5ddf0914aabd0f6aa2ee741.tar.bz2
Drawer widget in a MainWindow disappears after returning from full screen mode.
The problem was in the toggleDrawer function. We were not checking the status of the last transition before setting the new transition, so all the transition were treated as non-intentional. Task-number: QTBUG-11373 Reviewed-by: Prasanth
-rw-r--r--src/gui/kernel/qwidget_mac.mm4
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp23
2 files changed, 26 insertions, 1 deletions
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index c788711..8ae6a99 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -1599,12 +1599,14 @@ void QWidgetPrivate::toggleDrawers(bool visible)
continue;
QWidget *widget = static_cast<QWidget*>(object);
if(qt_mac_is_macdrawer(widget)) {
+ bool oldState = widget->testAttribute(Qt::WA_WState_ExplicitShowHide);
if(visible) {
if (!widget->testAttribute(Qt::WA_WState_ExplicitShowHide))
widget->show();
} else {
widget->hide();
- widget->setAttribute(Qt::WA_WState_ExplicitShowHide, false);
+ if(!oldState)
+ widget->setAttribute(Qt::WA_WState_ExplicitShowHide, false);
}
}
}
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 2d559c8..f20d27a 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -397,6 +397,9 @@ private slots:
void childAt();
#ifdef Q_WS_MAC
void childAt_unifiedToolBar();
+#ifdef QT_MAC_USE_COCOA
+ void taskQTBUG_11373();
+#endif // QT_MAC_USE_COCOA
#endif
private:
@@ -10435,6 +10438,26 @@ void tst_QWidget::childAt_unifiedToolBar()
QCOMPARE(mainWindow.childAt(toolBarTopLeft), static_cast<QWidget *>(toolBar));
QCOMPARE(mainWindow.childAt(labelTopLeft), static_cast<QWidget *>(label));
}
+
+#ifdef QT_MAC_USE_COCOA
+void tst_QWidget::taskQTBUG_11373()
+{
+ QMainWindow * myWindow = new QMainWindow();
+ QWidget * center = new QWidget();
+ myWindow -> setCentralWidget(center);
+ QWidget * drawer = new QWidget(myWindow, Qt::Drawer);
+ drawer -> hide();
+ QCOMPARE(drawer->isVisible(), false);
+ myWindow -> show();
+ myWindow -> raise();
+ // The drawer shouldn't be visible now.
+ QCOMPARE(drawer->isVisible(), false);
+ myWindow -> setWindowState(Qt::WindowFullScreen);
+ myWindow -> setWindowState(Qt::WindowNoState);
+ // The drawer should still not be visible, since we haven't shown it.
+ QCOMPARE(drawer->isVisible(), false);
+}
+#endif // QT_MAC_USE_COCOA
#endif
QTEST_MAIN(tst_QWidget)