From 8683ee14ccca0c51d126ba6f978d752097f992ab Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 18 Jul 2012 10:10:01 +0200 Subject: Track window state in manual test windowflags. Change-Id: Ief6cd4b29ddcc946e1ccac75b352da80bbf647d0 Reviewed-by: Joerg Bornemann --- tests/manual/windowflags/controllerwindow.cpp | 50 +++++++++++++++++++-------- tests/manual/windowflags/controllerwindow.h | 4 +++ 2 files changed, 39 insertions(+), 15 deletions(-) (limited to 'tests/manual') diff --git a/tests/manual/windowflags/controllerwindow.cpp b/tests/manual/windowflags/controllerwindow.cpp index 5c6bd5be81..e27614d89c 100644 --- a/tests/manual/windowflags/controllerwindow.cpp +++ b/tests/manual/windowflags/controllerwindow.cpp @@ -52,7 +52,7 @@ #include "controls.h" //! [0] -ControllerWindow::ControllerWindow() +ControllerWindow::ControllerWindow() : previewWidget(0) { parentWindow = new QMainWindow; parentWindow->setWindowTitle(tr("Preview parent window")); @@ -60,7 +60,9 @@ ControllerWindow::ControllerWindow() parentWindow->setCentralWidget(label); previewWindow = new PreviewWindow; + previewWindow->installEventFilter(this); previewDialog = new PreviewDialog; + previewDialog->installEventFilter(this); createTypeGroupBox(); @@ -69,6 +71,11 @@ ControllerWindow::ControllerWindow() QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addStretch(); + + QPushButton *updateControlsButton = new QPushButton(tr("&Update")); + connect(updateControlsButton, SIGNAL(clicked()), this, SLOT(updateStateControl())); + + bottomLayout->addWidget(updateControlsButton); bottomLayout->addWidget(quitButton); hintsControl = new HintControl; @@ -103,45 +110,58 @@ ControllerWindow::ControllerWindow() updatePreview(); } +bool ControllerWindow::eventFilter(QObject *o, QEvent *e) +{ + if (e->type() == QEvent::WindowStateChange) + updateStateControl(); + return false; +} + +void ControllerWindow::updateStateControl() +{ + if (previewWidget) + statesControl->setStates(previewWidget->windowState()); +} + void ControllerWindow::updatePreview() { const Qt::WindowFlags flags = typeControl->type() | hintsControl->hints(); previewWindow->hide(); previewDialog->hide(); - QWidget *widget = 0; + if (previewWidgetButton->isChecked()) - widget = previewWindow; + previewWidget = previewWindow; else - widget = previewDialog; + previewWidget = previewDialog; if (modalWindowCheckBox->isChecked()) { parentWindow->show(); - widget->setWindowModality(Qt::WindowModal); - widget->setParent(parentWindow); + previewWidget->setWindowModality(Qt::WindowModal); + previewWidget->setParent(parentWindow); } else { - widget->setWindowModality(Qt::NonModal); - widget->setParent(0); + previewWidget->setWindowModality(Qt::NonModal); + previewWidget->setParent(0); parentWindow->hide(); } - widget->setWindowFlags(flags); + previewWidget->setWindowFlags(flags); if (fixedSizeWindowCheckBox->isChecked()) { - widget->setFixedSize(300, 300); + previewWidget->setFixedSize(300, 300); } else { - widget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + previewWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); } - QPoint pos = widget->pos(); + QPoint pos = previewWidget->pos(); if (pos.x() < 0) pos.setX(0); if (pos.y() < 0) pos.setY(0); - widget->move(pos); + previewWidget->move(pos); - widget->setWindowState(statesControl->states()); - widget->setVisible(statesControl->visibleValue()); + previewWidget->setWindowState(statesControl->states()); + previewWidget->setVisible(statesControl->visibleValue()); } void ControllerWindow::createTypeGroupBox() diff --git a/tests/manual/windowflags/controllerwindow.h b/tests/manual/windowflags/controllerwindow.h index 48b981b576..3776fe0abe 100644 --- a/tests/manual/windowflags/controllerwindow.h +++ b/tests/manual/windowflags/controllerwindow.h @@ -67,8 +67,11 @@ class ControllerWindow : public QWidget public: ControllerWindow(); + virtual bool eventFilter(QObject *o, QEvent *e); + private slots: void updatePreview(); + void updateStateControl(); private: void createTypeGroupBox(); @@ -78,6 +81,7 @@ private: QMainWindow *parentWindow; PreviewWindow *previewWindow; PreviewDialog *previewDialog; + QWidget *previewWidget; QGroupBox *widgetTypeGroupBox; QGroupBox *additionalOptionsGroupBox; TypeControl *typeControl; -- cgit v1.2.3