From 4800a94c94bdd1491a5dba1c89cf0edbd4b84121 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 30 Mar 2012 10:11:48 +0200 Subject: Cocoa: use specified window modality in native print dialogs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don't pick the modality type based on the presences of a parent widget, use QWidget::windowModality() instead. If modality hasn't been specified, then use presence of the parent to chose an appropriate modality type. Change-Id: Ib39c166ba3293174c55748f63222367e3e1c56bc Reviewed-by: Morten Johan Sørvig --- src/printsupport/dialogs/qpagesetupdialog_mac.mm | 8 ++++++-- src/printsupport/dialogs/qprintdialog_mac.mm | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/printsupport/dialogs') diff --git a/src/printsupport/dialogs/qpagesetupdialog_mac.mm b/src/printsupport/dialogs/qpagesetupdialog_mac.mm index e387a58607..1dded4f905 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_mac.mm +++ b/src/printsupport/dialogs/qpagesetupdialog_mac.mm @@ -179,8 +179,12 @@ void QPageSetupDialog::setVisible(bool visible) QDialog::setVisible(visible); if (visible) { - d->openCocoaPageLayout(parentWidget() ? Qt::WindowModal - : Qt::ApplicationModal); + Qt::WindowModality modality = windowModality(); + if (modality == Qt::NonModal) { + // NSPrintPanels can only be modal, so we must pick a type + modality = parentWidget() ? Qt::WindowModal : Qt::ApplicationModal; + } + d->openCocoaPageLayout(modality); return; } else { if (d->pageLayout) { diff --git a/src/printsupport/dialogs/qprintdialog_mac.mm b/src/printsupport/dialogs/qprintdialog_mac.mm index 8ea3c9a11d..e1d85eed59 100644 --- a/src/printsupport/dialogs/qprintdialog_mac.mm +++ b/src/printsupport/dialogs/qprintdialog_mac.mm @@ -296,8 +296,12 @@ void QPrintDialog::setVisible(bool visible) QDialog::setVisible(visible); if (visible) { - d->openCocoaPrintPanel(parentWidget() ? Qt::WindowModal - : Qt::ApplicationModal); + Qt::WindowModality modality = windowModality(); + if (modality == Qt::NonModal) { + // NSPrintPanels can only be modal, so we must pick a type + modality = parentWidget() ? Qt::WindowModal : Qt::ApplicationModal; + } + d->openCocoaPrintPanel(modality); return; } else { if (d->printPanel) { -- cgit v1.2.3