diff options
Diffstat (limited to 'src/printsupport')
-rw-r--r-- | src/printsupport/dialogs/qabstractprintdialog.cpp | 4 | ||||
-rw-r--r-- | src/printsupport/dialogs/qprintdialog_mac.mm | 4 | ||||
-rw-r--r-- | src/printsupport/kernel/qpaintengine_preview.cpp | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/printsupport/dialogs/qabstractprintdialog.cpp b/src/printsupport/dialogs/qabstractprintdialog.cpp index 6951d8c7bc..ba5320f040 100644 --- a/src/printsupport/dialogs/qabstractprintdialog.cpp +++ b/src/printsupport/dialogs/qabstractprintdialog.cpp @@ -460,6 +460,10 @@ void QAbstractPrintDialog::setOptionTabs(const QList<QWidget*> &tabs) is shown with exec(), done() causes the local event loop to finish, and exec() to return \a result. + \note This function does not apply to the Native Print Dialog on the Mac + OS X and Windows platforms, because the dialog is required to be modal + and only the user can close it. + \sa QDialog::done() */ void QPrintDialog::done(int result) diff --git a/src/printsupport/dialogs/qprintdialog_mac.mm b/src/printsupport/dialogs/qprintdialog_mac.mm index e76bb18626..9839268af4 100644 --- a/src/printsupport/dialogs/qprintdialog_mac.mm +++ b/src/printsupport/dialogs/qprintdialog_mac.mm @@ -198,7 +198,9 @@ void QPrintDialogPrivate::openCocoaPrintPanel(Qt::WindowModality modality) qApp->processEvents(QEventLoop::ExcludeUserInputEvents, QEventLoop::ExcludeSocketNotifiers); QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QCocoaPrintPanelDelegate) alloc] init]; - if (modality == Qt::ApplicationModal) { + if (modality == Qt::ApplicationModal || !q->parentWidget()) { + if (modality == Qt::NonModal) + qWarning("QPrintDialog is required to be modal on OS X"); int rval = [printPanel runModalWithPrintInfo:printInfo]; [delegate printPanelDidEnd:printPanel returnCode:rval contextInfo:q]; } else { diff --git a/src/printsupport/kernel/qpaintengine_preview.cpp b/src/printsupport/kernel/qpaintengine_preview.cpp index d8c653fed8..d0578c5543 100644 --- a/src/printsupport/kernel/qpaintengine_preview.cpp +++ b/src/printsupport/kernel/qpaintengine_preview.cpp @@ -94,6 +94,7 @@ bool QPreviewPaintEngine::begin(QPaintDevice *) page->d_func()->in_memory_only = true; d->painter = new QPainter(page); d->engine = d->painter->paintEngine(); + *d->painter->d_func()->state = *painter()->d_func()->state; d->pages.append(page); d->state = QPrinter::Active; return true; |