From e810ba81bb304875b04e5fb1ebdb2b27537115c5 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 6 Oct 2016 15:15:55 -0400 Subject: [PATCH] Fix print size issue from pan/zoom mods --- src/Mod/TechDraw/Gui/MDIViewPage.cpp | 16 +++++++++++++--- src/Mod/TechDraw/Gui/QGVPage.cpp | 8 ++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 42a3612273..730ab53398 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -701,12 +701,12 @@ void MDIViewPage::print(QPrinter* printer) return; } - QRect rect = printer->paperRect(); + QRect targetRect = printer->paperRect(); #ifdef Q_OS_WIN32 // On Windows the preview looks broken when using paperRect as render area. // Although the picture is scaled when using pageRect, it looks just fine. if (paintType == QPaintEngine::Picture) - rect = printer->pageRect(); + targetRect = printer->pageRect(); #endif //bool block = @@ -718,7 +718,17 @@ void MDIViewPage::print(QPrinter* printer) Gui::Selection().clearSelection(); - m_view->scene()->render(&p, rect); + App::DocumentObject *obj = m_vpPage->getDrawPage()->Template.getValue(); + auto pageTemplate( dynamic_cast(obj) ); + double width = 0.0; + double height = 0.0; + if( pageTemplate ) { + width = pageTemplate->Width.getValue(); + height = pageTemplate->Height.getValue(); + } + QRectF sourceRect(0.0,-height,width,height); + + m_view->scene()->render(&p, targetRect,sourceRect); // Reset m_view->toggleMarkers(true); diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index b57c6e96f1..3e6d8701cc 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -519,11 +519,16 @@ void QGVPage::saveSvg(QString filename) scene()->update(); viewport()->repaint(); + double width = page->getPageWidth(); + double height = page->getPageHeight(); + QRectF sourceRect(0.0,-height,width,height); + QRectF targetRect; + Gui::Selection().clearSelection(); QPainter p; p.begin(&svgGen); - scene()->render(&p); + scene()->render(&p, targetRect,sourceRect); p.end(); toggleMarkers(true); @@ -532,7 +537,6 @@ void QGVPage::saveSvg(QString filename) viewport()->repaint(); } - void QGVPage::paintEvent(QPaintEvent *event) { if (m_renderer == Image) {