diff options
Diffstat (limited to 'tests/manual/windowflags')
-rw-r--r-- | tests/manual/windowflags/controllerwindow.cpp | 102 | ||||
-rw-r--r-- | tests/manual/windowflags/controllerwindow.h | 11 | ||||
-rw-r--r-- | tests/manual/windowflags/main.cpp | 1 | ||||
-rw-r--r-- | tests/manual/windowflags/previewwindow.cpp | 20 | ||||
-rw-r--r-- | tests/manual/windowflags/previewwindow.h | 4 |
5 files changed, 93 insertions, 45 deletions
diff --git a/tests/manual/windowflags/controllerwindow.cpp b/tests/manual/windowflags/controllerwindow.cpp index 9a12c8b2c9..4b380d5355 100644 --- a/tests/manual/windowflags/controllerwindow.cpp +++ b/tests/manual/windowflags/controllerwindow.cpp @@ -59,24 +59,26 @@ ControllerWidget::ControllerWidget(QWidget *parent) QLabel *label = new QLabel(tr("Parent window")); parentWindow->setCentralWidget(label); - previewWindow = new PreviewWindow; + previewWindow = new QWindow; previewWindow->installEventFilter(this); + previewWidget = new PreviewWidget; + previewWidget->installEventFilter(this); previewDialog = new PreviewDialog; previewDialog->installEventFilter(this); createTypeGroupBox(); hintsControl = new HintControl; - hintsControl->setHints(previewWindow->windowFlags()); + hintsControl->setHints(previewWidget->windowFlags()); connect(hintsControl, SIGNAL(changed(Qt::WindowFlags)), this, SLOT(updatePreview())); statesControl = new WindowStatesControl; - statesControl->setStates(previewWindow->windowState()); + statesControl->setStates(previewWidget->windowState()); statesControl->setVisibleValue(true); connect(statesControl, SIGNAL(changed()), this, SLOT(updatePreview())); typeControl = new TypeControl; - typeControl->setType(previewWindow->windowFlags()); + typeControl->setType(previewWidget->windowFlags()); connect(typeControl, SIGNAL(changed(Qt::WindowFlags)), this, SLOT(updatePreview())); QVBoxLayout *mainLayout = new QVBoxLayout(this); @@ -98,61 +100,99 @@ bool ControllerWidget::eventFilter(QObject *, QEvent *e) void ControllerWidget::updateStateControl() { - if (previewWidget) - statesControl->setStates(previewWidget->windowState()); + if (activePreview) + statesControl->setStates(activePreview->windowStates()); } -void ControllerWidget::updatePreview() +void ControllerWidget::updatePreview(QWindow *preview) { - const Qt::WindowFlags flags = typeControl->type() | hintsControl->hints(); + activePreview = preview; - if (previewWidgetButton->isChecked()) { - previewWidget = previewWindow; - previewDialog->hide(); - } else { - previewWidget = previewDialog; - previewWindow->hide(); - } + const Qt::WindowFlags flags = typeControl->type() | hintsControl->hints(); if (modalWindowCheckBox->isChecked()) { parentWindow->show(); - previewWidget->setWindowModality(Qt::WindowModal); - previewWidget->setParent(parentWindow); + preview->setModality(Qt::WindowModal); + preview->setParent(parentWindow->windowHandle()); } else { - previewWidget->setWindowModality(Qt::NonModal); - previewWidget->setParent(0); + preview->setModality(Qt::NonModal); + preview->setParent(0); parentWindow->hide(); } - if (previewWidgetButton->isChecked()) - previewWindow->setWindowFlags(flags); - else - previewDialog->setWindowFlags(flags); + preview->setFlags(flags); if (fixedSizeWindowCheckBox->isChecked()) { - previewWidget->setFixedSize(300, 300); + preview->setMinimumSize(QSize(300, 300)); + preview->setMaximumSize(QSize(300, 300)); } else { - previewWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + preview->setMinimumSize(QSize(0, 0)); + preview->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); } - QPoint pos = previewWidget->pos(); + preview->setWindowStates(statesControl->states()); + preview->setVisible(statesControl->visibleValue()); +} + +void ControllerWidget::updatePreview(QWidget *preview) +{ + activePreview = preview->windowHandle(); + + const Qt::WindowFlags flags = typeControl->type() | hintsControl->hints(); + + if (modalWindowCheckBox->isChecked()) { + parentWindow->show(); + preview->setWindowModality(Qt::WindowModal); + preview->setParent(parentWindow); + } else { + preview->setWindowModality(Qt::NonModal); + preview->setParent(0); + parentWindow->hide(); + } + + preview->setWindowFlags(flags); + + QSize fixedSize = fixedSizeWindowCheckBox->isChecked() ? + QSize(300, 300) : QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + preview->setFixedSize(fixedSize); + + QPoint pos = preview->pos(); if (pos.x() < 0) pos.setX(0); if (pos.y() < 0) pos.setY(0); - previewWidget->move(pos); + preview->move(pos); + + preview->setWindowState(statesControl->states()); + preview->setVisible(statesControl->visibleValue()); +} - previewWidget->setWindowState(statesControl->states()); - previewWidget->setVisible(statesControl->visibleValue()); +void ControllerWidget::updatePreview() +{ + if (previewWindowButton->isChecked()) { + previewDialog->hide(); + previewWidget->close(); + updatePreview(previewWindow); + } else if (previewWidgetButton->isChecked()) { + previewWindow->hide(); + previewDialog->hide(); + updatePreview(previewWidget); + } else { + previewWindow->hide(); + previewWidget->close(); + updatePreview(previewDialog); + } } void ControllerWidget::createTypeGroupBox() { - widgetTypeGroupBox = new QGroupBox(tr("Widget Type")); + widgetTypeGroupBox = new QGroupBox(tr("Window Type")); + previewWindowButton = createRadioButton(tr("QWindow")); previewWidgetButton = createRadioButton(tr("QWidget")); - previewWidgetButton->setChecked(true); previewDialogButton = createRadioButton(tr("QDialog")); + previewWindowButton->setChecked(true); QHBoxLayout *l = new QHBoxLayout; + l->addWidget(previewWindowButton); l->addWidget(previewWidgetButton); l->addWidget(previewDialogButton); widgetTypeGroupBox->setLayout(l); diff --git a/tests/manual/windowflags/controllerwindow.h b/tests/manual/windowflags/controllerwindow.h index 43a125a9ae..c623256112 100644 --- a/tests/manual/windowflags/controllerwindow.h +++ b/tests/manual/windowflags/controllerwindow.h @@ -60,20 +60,27 @@ private slots: void updateStateControl(); private: + void updatePreview(QWindow *); + void updatePreview(QWidget *); void createTypeGroupBox(); QCheckBox *createCheckBox(const QString &text); QRadioButton *createRadioButton(const QString &text); QMainWindow *parentWindow; - PreviewWindow *previewWindow; + + QWindow *previewWindow; + PreviewWidget *previewWidget; PreviewDialog *previewDialog; - QWidget *previewWidget; + + QWindow *activePreview; + QGroupBox *widgetTypeGroupBox; QGroupBox *additionalOptionsGroupBox; TypeControl *typeControl; HintControl *hintsControl; WindowStatesControl *statesControl; + QRadioButton *previewWindowButton; QRadioButton *previewWidgetButton; QRadioButton *previewDialogButton; QCheckBox *modalWindowCheckBox; diff --git a/tests/manual/windowflags/main.cpp b/tests/manual/windowflags/main.cpp index a7d7307525..4da878d8cc 100644 --- a/tests/manual/windowflags/main.cpp +++ b/tests/manual/windowflags/main.cpp @@ -43,5 +43,6 @@ int main(int argc, char *argv[]) if (!arguments.contains(QLatin1String("-e"))) controller.registerEventFilter(); controller.show(); + controller.lower(); return app.exec(); } diff --git a/tests/manual/windowflags/previewwindow.cpp b/tests/manual/windowflags/previewwindow.cpp index 65a287f788..19473c9eee 100644 --- a/tests/manual/windowflags/previewwindow.cpp +++ b/tests/manual/windowflags/previewwindow.cpp @@ -172,37 +172,37 @@ static QPlainTextEdit *createControlPanel(QWidget *widget) QGridLayout *buttonLayout = new QGridLayout; bottomLayout->addStretch(); bottomLayout->addLayout(buttonLayout); - QPushButton *showNormalButton = new QPushButton(PreviewWindow::tr("Show normal")); + QPushButton *showNormalButton = new QPushButton(PreviewWidget::tr("Show normal")); QObject::connect(showNormalButton, SIGNAL(clicked()), widget, SLOT(showNormal())); buttonLayout->addWidget(showNormalButton, 0, 0); - QPushButton *showMinimizedButton = new QPushButton(PreviewWindow::tr("Show minimized")); + QPushButton *showMinimizedButton = new QPushButton(PreviewWidget::tr("Show minimized")); QObject::connect(showMinimizedButton, SIGNAL(clicked()), widget, SLOT(showMinimized())); buttonLayout->addWidget(showMinimizedButton, 0, 1); - QPushButton *showMaximizedButton = new QPushButton(PreviewWindow::tr("Show maximized")); + QPushButton *showMaximizedButton = new QPushButton(PreviewWidget::tr("Show maximized")); QObject::connect(showMaximizedButton, SIGNAL(clicked()), widget, SLOT(showMaximized())); buttonLayout->addWidget(showMaximizedButton, 0, 2); - QPushButton *showFullScreenButton = new QPushButton(PreviewWindow::tr("Show fullscreen")); + QPushButton *showFullScreenButton = new QPushButton(PreviewWidget::tr("Show fullscreen")); QObject::connect(showFullScreenButton, SIGNAL(clicked()), widget, SLOT(showFullScreen())); buttonLayout->addWidget(showFullScreenButton, 0, 3); - QPushButton *updateInfoButton = new QPushButton(PreviewWindow::tr("&Update Info")); + QPushButton *updateInfoButton = new QPushButton(PreviewWidget::tr("&Update Info")); QObject::connect(updateInfoButton, SIGNAL(clicked()), widget, SLOT(updateInfo())); buttonLayout->addWidget(updateInfoButton, 1, 0); - QPushButton *closeButton = new QPushButton(PreviewWindow::tr("&Close")); + QPushButton *closeButton = new QPushButton(PreviewWidget::tr("&Close")); QObject::connect(closeButton, SIGNAL(clicked()), widget, SLOT(close())); buttonLayout->addWidget(closeButton, 1, 3); return textEdit; } -PreviewWindow::PreviewWindow(QWidget *parent) +PreviewWidget::PreviewWidget(QWidget *parent) : QWidget(parent) { textEdit = createControlPanel(this); setWindowTitle(tr("Preview <QWidget> Qt %1").arg(QLatin1String(QT_VERSION_STR))); } -bool PreviewWindow::event(QEvent *event) +bool PreviewWidget::event(QEvent *event) { const bool ret = QWidget::event(event); @@ -219,7 +219,7 @@ bool PreviewWindow::event(QEvent *event) return ret; } -void PreviewWindow::setWindowFlags(Qt::WindowFlags flags) +void PreviewWidget::setWindowFlags(Qt::WindowFlags flags) { if (flags == windowFlags()) return; @@ -227,7 +227,7 @@ void PreviewWindow::setWindowFlags(Qt::WindowFlags flags) QTimer::singleShot(0, this, SLOT(updateInfo())); } -void PreviewWindow::updateInfo() +void PreviewWidget::updateInfo() { textEdit->setPlainText(formatWidgetInfo(this)); } diff --git a/tests/manual/windowflags/previewwindow.h b/tests/manual/windowflags/previewwindow.h index 9730e7a3f9..023ddd910c 100644 --- a/tests/manual/windowflags/previewwindow.h +++ b/tests/manual/windowflags/previewwindow.h @@ -35,12 +35,12 @@ QT_BEGIN_NAMESPACE class QPlainTextEdit; QT_END_NAMESPACE -class PreviewWindow : public QWidget +class PreviewWidget : public QWidget { Q_OBJECT public: - PreviewWindow(QWidget *parent = 0); + PreviewWidget(QWidget *parent = 0); void setWindowFlags(Qt::WindowFlags flags); |