diff options
author | Allan Sandfeld Jensen <[email protected]> | 2024-02-29 15:18:19 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <[email protected]> | 2024-03-03 18:14:57 +0000 |
commit | fbf0f46fabc1eafcac2c6c160ce31ab328a1ea24 (patch) | |
tree | 5072371be0451f06f959666914f7aab8e971152b | |
parent | 8540dd47a67c598d7d035965adb1d6b75154dcdf (diff) |
Fix previewing a preview on reentrance
Make the print preview more tolerant of reentrance by avoiding
previewing itself.
Change-Id: Ia4774cb51bdda7d311414c4e2f9c2bfbed4f187f
Fixes: QTBUG-122749
Reviewed-by: Friedemann Kleint <[email protected]>
(cherry picked from commit 367e6ff0b20be47fdc9ddd72866053ec60cbe254)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 3ff5f601b6224fd7768d049843c415e502ab3558)
(cherry picked from commit e27855c299afa0f77b1bfaa566d17c572833aeba)
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 5 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter_p.h | 1 | ||||
-rw-r--r-- | src/printsupport/widgets/qprintpreviewwidget.cpp | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index b9dfd63d5b5..ef962677f33 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -129,6 +129,11 @@ QList<const QPicture *> QPrinterPrivate::previewPages() const return QList<const QPicture *>(); } +bool QPrinterPrivate::previewMode() const +{ + return (previewEngine != nullptr) && (previewEngine == printEngine); +} + void QPrinterPrivate::setPreviewMode(bool enable) { Q_Q(QPrinter); diff --git a/src/printsupport/kernel/qprinter_p.h b/src/printsupport/kernel/qprinter_p.h index 3411f24736f..ccddea8c4a8 100644 --- a/src/printsupport/kernel/qprinter_p.h +++ b/src/printsupport/kernel/qprinter_p.h @@ -70,6 +70,7 @@ public: #if QT_CONFIG(printpreviewwidget) QList<const QPicture *> previewPages() const; void setPreviewMode(bool); + bool previewMode() const; #endif void setProperty(QPrintEngine::PrintEnginePropertyKey key, const QVariant &value); diff --git a/src/printsupport/widgets/qprintpreviewwidget.cpp b/src/printsupport/widgets/qprintpreviewwidget.cpp index e44c2c9d7ee..b73181a1d77 100644 --- a/src/printsupport/widgets/qprintpreviewwidget.cpp +++ b/src/printsupport/widgets/qprintpreviewwidget.cpp @@ -361,6 +361,9 @@ void QPrintPreviewWidgetPrivate::generatePreview() //### emit paintRequested() until the user changes some parameter Q_Q(QPrintPreviewWidget); + // Avoid previewing a preview + if (printer->d_func()->previewMode()) + return; printer->d_func()->setPreviewMode(true); emit q->paintRequested(printer); printer->d_func()->setPreviewMode(false); |