summaryrefslogtreecommitdiffstats
path: root/src/printsupport/dialogs/qprintdialog_win.cpp
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2012-03-30 10:01:14 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-04 11:56:57 +0200
commitf7674d812222d03f937bec55e54c55eb51e1e6e1 (patch)
tree25d5be5fd170a0d2d909f26211d89864b70ee26b /src/printsupport/dialogs/qprintdialog_win.cpp
parent3867641d78809cf81370b52c74d6cfadc7e32629 (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/qprintdialog_win.cpp')
-rw-r--r--src/printsupport/dialogs/qprintdialog_win.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/printsupport/dialogs/qprintdialog_win.cpp b/src/printsupport/dialogs/qprintdialog_win.cpp
index cc36e5eb8e..5474643de9 100644
--- a/src/printsupport/dialogs/qprintdialog_win.cpp
+++ b/src/printsupport/dialogs/qprintdialog_win.cpp
@@ -193,6 +193,7 @@ QPrintDialog::QPrintDialog(QPrinter *printer, QWidget *parent)
if (!warnIfNotNative(d->printer))
return;
d->ep = static_cast<QWin32PrintEngine *>(d->printer->paintEngine())->d_func();
+ setAttribute(Qt::WA_DontShowOnScreen);
}
QPrintDialog::QPrintDialog(QWidget *parent)
@@ -202,6 +203,7 @@ QPrintDialog::QPrintDialog(QWidget *parent)
if (!warnIfNotNative(d->printer))
return;
d->ep = static_cast<QWin32PrintEngine *>(d->printer->paintEngine())->d_func();
+ setAttribute(Qt::WA_DontShowOnScreen);
}
QPrintDialog::~QPrintDialog()
@@ -230,10 +232,7 @@ int QPrintDialogPrivate::openWindowsPrintDialogModally()
if (parent == 0)
parent = q;
- QWidget modal_widget;
- modal_widget.setAttribute(Qt::WA_NoChildEventsForParent, true);
- modal_widget.setParent(parent, Qt::Window);
- QApplicationPrivate::enterModal(&modal_widget);
+ q->QDialog::setVisible(true);
HGLOBAL *tempDevNames = ep->createDevNames();
@@ -274,7 +273,7 @@ int QPrintDialogPrivate::openWindowsPrintDialogModally()
}
} while (!done);
- QApplicationPrivate::leaveModal(&modal_widget);
+ q->QDialog::setVisible(false);
// qt_win_eatMouseMove();