From a9bff4091495238ca89bfbeb918d8099c628dff2 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 19 Mar 2023 18:56:32 +0100 Subject: [PATCH] Gui: fix printing from ImageView --- src/Gui/ImageView.cpp | 22 ++++++++++------------ src/Gui/MDIView.cpp | 16 ++++++++++++++-- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/Gui/ImageView.cpp b/src/Gui/ImageView.cpp index 42227b450d..39a2aff196 100644 --- a/src/Gui/ImageView.cpp +++ b/src/Gui/ImageView.cpp @@ -286,21 +286,19 @@ QImage ImageView::imageFromClipboard() void ImageView::print(QPrinter* printer) { - QPrintDialog dialog(printer, this); - if (dialog.exec()) { - QPainter painter(printer); - QPixmap pixmap = QPixmap::fromImage(rawImage); - QRect rect = painter.viewport(); - QSize size = pixmap.size(); - size.scale(rect.size(), Qt::KeepAspectRatio); - painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); - painter.setWindow(pixmap.rect()); - painter.drawPixmap(0, 0, pixmap); - } + QPainter painter(printer); + QPixmap pixmap = QPixmap::fromImage(rawImage); + QRect rect = painter.viewport(); + QSize size = pixmap.size(); + size.scale(rect.size(), Qt::KeepAspectRatio); + painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); + painter.setWindow(pixmap.rect()); + painter.drawPixmap(0, 0, pixmap); } -bool ImageView::onMsg(const char* pMsg,const char**) +bool ImageView::onMsg(const char* pMsg,const char** ppReturn) { + Q_UNUSED(ppReturn) if (strcmp("ViewFit", pMsg) == 0) { fitToWindow(true); return true; diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp index 3a7bd1fee3..a65fd02520 100644 --- a/src/Gui/MDIView.cpp +++ b/src/Gui/MDIView.cpp @@ -272,7 +272,13 @@ void MDIView::printPreview() void MDIView::savePrinterSettings(QPrinter* printer) { auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer"); - hGrp = hGrp->GetGroup(printer->printerName().toUtf8()); + QString printerName = printer->printerName(); + if (printerName.isEmpty()) { + // no printer defined + return; + } + + hGrp = hGrp->GetGroup(printerName.toUtf8()); hGrp->SetInt("DefaultPageSize", printer->pageLayout().pageSize().id()); hGrp->SetInt("DefaultPageOrientation", static_cast(printer->pageLayout().orientation())); @@ -282,7 +288,13 @@ void MDIView::savePrinterSettings(QPrinter* printer) void MDIView::restorePrinterSettings(QPrinter* printer) { auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Printer"); - hGrp = hGrp->GetGroup(printer->printerName().toUtf8()); + QString printerName = printer->printerName(); + if (printerName.isEmpty()) { + // no printer defined + return; + } + + hGrp = hGrp->GetGroup(printerName.toUtf8()); QPrinterInfo info = QPrinterInfo::defaultPrinter(); int initialDefaultPageSize = info.isNull() ? QPageSize::A4 : info.defaultPageSize().id();