diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2012-03-30 10:01:14 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-04 11:56:57 +0200 |
commit | f7674d812222d03f937bec55e54c55eb51e1e6e1 (patch) | |
tree | 25d5be5fd170a0d2d909f26211d89864b70ee26b /src/printsupport/dialogs/qpagesetupdialog_win.cpp | |
parent | 3867641d78809cf81370b52c74d6cfadc7e32629 (diff) |
printing: Make sure window modality works with native print dialogs
Make the native QPrintDialogs and QPageSetupDialogs participate in the
Qt modality system. Even though we are overriding QDialog::setVisible()
and exec() to show the native dialgos, we want to still call into
QDialog::setVisible() so that modality state and events are properly
handled. We do this by setting the WA_DontShowOnScreen attribute on
QPrintDialog and QPageSetupDialog, and call QDialog::setVisible() at the
appropriate places.
Change-Id: I7d800790c40ba1f467c3315e29abb79a7fa0eb34
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'src/printsupport/dialogs/qpagesetupdialog_win.cpp')
-rw-r--r-- | src/printsupport/dialogs/qpagesetupdialog_win.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/printsupport/dialogs/qpagesetupdialog_win.cpp b/src/printsupport/dialogs/qpagesetupdialog_win.cpp index beaea96dd9..9d7387edba 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_win.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_win.cpp @@ -58,11 +58,13 @@ class QPageSetupDialogPrivate : public QAbstractPageSetupDialogPrivate QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent) : QAbstractPageSetupDialog(*(new QPageSetupDialogPrivate), printer, parent) { + setAttribute(Qt::WA_DontShowOnScreen); } QPageSetupDialog::QPageSetupDialog(QWidget *parent) : QAbstractPageSetupDialog(*(new QPageSetupDialogPrivate), 0, parent) { + setAttribute(Qt::WA_DontShowOnScreen); } int QPageSetupDialog::exec() @@ -124,7 +126,9 @@ int QPageSetupDialog::exec() psd.rtMargin.right = marginRect.width() / multiplier;; psd.rtMargin.bottom = marginRect.height() / multiplier;; + QDialog::setVisible(true); bool result = PageSetupDlg(&psd); + QDialog::setVisible(false); if (result) { ep->readDevnames(psd.hDevNames); ep->readDevmode(psd.hDevMode); |