From 1960a4a8a430f7f68b27ef477791a69eefa83895 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Fri, 14 Nov 2025 15:38:16 -0500 Subject: [PATCH] [TD]enforce center mark print rule on print preview --- src/Mod/TechDraw/Gui/MDIViewPage.cpp | 7 +++++-- src/Mod/TechDraw/Gui/MDIViewPage.h | 2 ++ src/Mod/TechDraw/Gui/PagePrinter.cpp | 5 +++-- src/Mod/TechDraw/Gui/PagePrinter.h | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 7a16b0c32f..a69c74f9c4 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -81,7 +81,8 @@ namespace sp = std::placeholders; TYPESYSTEM_SOURCE_ABSTRACT(TechDrawGui::MDIViewPage, Gui::MDIView) MDIViewPage::MDIViewPage(ViewProviderPage* pageVp, Gui::Document* doc, QWidget* parent) - : Gui::MDIView(doc, parent), m_vpPage(pageVp) + : Gui::MDIView(doc, parent), m_vpPage(pageVp), + m_previewState(false) { setMouseTracking(true); @@ -362,7 +363,9 @@ void MDIViewPage::printPreview() QPrintPreviewDialog dlg(&printer, this); connect(&dlg, &QPrintPreviewDialog::paintRequested, this, qOverload(&MDIViewPage::print)); + m_previewState = true; dlg.exec(); + m_previewState = false; } @@ -411,7 +414,7 @@ void MDIViewPage::print(QPrinter* printer) } } - PagePrinter::print(getViewProviderPage(), printer); + PagePrinter::print(getViewProviderPage(), printer, m_previewState); } // static routine to print all pages in a document. Used by PrintAll command in Command.cpp diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 64698d1c6d..c3fa868d65 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -156,6 +156,8 @@ private: QList m_orderedSceneSelection; //items in selection order QString defaultFileName(); + + bool m_previewState{false}; }; class MDIViewPagePy : public Py::PythonExtension diff --git a/src/Mod/TechDraw/Gui/PagePrinter.cpp b/src/Mod/TechDraw/Gui/PagePrinter.cpp index 49b0411741..e8548f0258 100644 --- a/src/Mod/TechDraw/Gui/PagePrinter.cpp +++ b/src/Mod/TechDraw/Gui/PagePrinter.cpp @@ -305,7 +305,7 @@ void PagePrinter::renderPage(ViewProviderPage* vpp, QPainter& painter, QRectF& s /// print the Page associated with the view provider -void PagePrinter::print(ViewProviderPage* vpPage, QPrinter* printer) +void PagePrinter::print(ViewProviderPage* vpPage, QPrinter* printer, bool isPreview) { QPageLayout pageLayout = printer->pageLayout(); @@ -318,7 +318,8 @@ void PagePrinter::print(ViewProviderPage* vpPage, QPrinter* printer) QPainter painter(printer); auto ourScene = vpPage->getQGSPage(); - if (!printer->outputFileName().isEmpty()) { + if (!printer->outputFileName().isEmpty() || + isPreview) { ourScene->setExportingPdf(true); } auto ourDoc = Gui::Application::Instance->getDocument(dPage->getDocument()); diff --git a/src/Mod/TechDraw/Gui/PagePrinter.h b/src/Mod/TechDraw/Gui/PagePrinter.h index ea43e94090..19ff8a7288 100644 --- a/src/Mod/TechDraw/Gui/PagePrinter.h +++ b/src/Mod/TechDraw/Gui/PagePrinter.h @@ -105,7 +105,7 @@ public: static PaperAttributes getPaperAttributes(TechDraw::DrawPage* pageObject); static PaperAttributes getPaperAttributes(ViewProviderPage* vpPage); - static void print(ViewProviderPage* vpPage, QPrinter* printer); + static void print(ViewProviderPage* vpPage, QPrinter* printer, bool isPreview = false); static void printPdf(ViewProviderPage* vpPage, const std::string& file); static void printAll(QPrinter* printer, App::Document* doc); static void printAllPdf(QPrinter* printer, App::Document* doc);