Cocoa: use specified window modality in native print dialogs

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 <morten.sorvig@nokia.com>
This commit is contained in:
Bradley T. Hughes 2012-03-30 10:11:48 +02:00 committed by Qt by Nokia
parent 3a4ed33140
commit 4800a94c94
2 changed files with 12 additions and 4 deletions

View File

@ -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) {

View File

@ -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) {