From 8ebfe00f4ab79516a8276929a682c24f4c675b5f Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 21 Aug 2017 14:34:17 +0200 Subject: Initialize the print engine with the given printer name Originally when the QPrinter was created it would create the engine with the default printer and then change it afterwards even though the desired printer may already be known here. So by passing the printer name we ensure that it is initialized with the desired one right away. Task-number: QTBUG-62221 Change-Id: Iaa90243708b57bf89354a527a982ac45c991f603 Reviewed-by: Friedemann Kleint --- src/printsupport/kernel/qplatformprintersupport.cpp | 2 +- src/printsupport/kernel/qplatformprintersupport.h | 2 +- src/printsupport/kernel/qprintengine_win.cpp | 4 ++-- src/printsupport/kernel/qprintengine_win_p.h | 2 +- src/printsupport/kernel/qprinter.cpp | 3 +-- 5 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src/printsupport/kernel') diff --git a/src/printsupport/kernel/qplatformprintersupport.cpp b/src/printsupport/kernel/qplatformprintersupport.cpp index 5397c43b33..388dd5ff8e 100644 --- a/src/printsupport/kernel/qplatformprintersupport.cpp +++ b/src/printsupport/kernel/qplatformprintersupport.cpp @@ -68,7 +68,7 @@ QPlatformPrinterSupport::~QPlatformPrinterSupport() { } -QPrintEngine *QPlatformPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode) +QPrintEngine *QPlatformPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode, const QString &) { return 0; } diff --git a/src/printsupport/kernel/qplatformprintersupport.h b/src/printsupport/kernel/qplatformprintersupport.h index d3da4295a1..6a4246adc0 100644 --- a/src/printsupport/kernel/qplatformprintersupport.h +++ b/src/printsupport/kernel/qplatformprintersupport.h @@ -72,7 +72,7 @@ public: QPlatformPrinterSupport(); virtual ~QPlatformPrinterSupport(); - virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); + virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId = QString()); virtual QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode); virtual QPrintDevice createPrintDevice(const QString &id); diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 37f2290d94..e399118cc9 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -79,7 +79,7 @@ extern QMarginsF qt_convertMargins(const QMarginsF &margins, QPageLayout::Unit f static void draw_text_item_win(const QPointF &_pos, const QTextItemInt &ti, HDC hdc, const QTransform &xform, const QPointF &topLeft); -QWin32PrintEngine::QWin32PrintEngine(QPrinter::PrinterMode mode) +QWin32PrintEngine::QWin32PrintEngine(QPrinter::PrinterMode mode, const QString &deviceId) : QAlphaPaintEngine(*(new QWin32PrintEnginePrivate), PaintEngineFeatures(PrimitiveTransform | PixmapTransform @@ -92,7 +92,7 @@ QWin32PrintEngine::QWin32PrintEngine(QPrinter::PrinterMode mode) d->mode = mode; QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get(); if (ps) - d->m_printDevice = ps->createDefaultPrintDevice(); + d->m_printDevice = ps->createPrintDevice(deviceId.isEmpty() ? ps->defaultPrintDeviceId() : deviceId); d->m_pageLayout.setPageSize(d->m_printDevice.defaultPageSize()); d->initialize(); } diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h index 196263df74..876155a3a5 100644 --- a/src/printsupport/kernel/qprintengine_win_p.h +++ b/src/printsupport/kernel/qprintengine_win_p.h @@ -73,7 +73,7 @@ class Q_PRINTSUPPORT_EXPORT QWin32PrintEngine : public QAlphaPaintEngine, public { Q_DECLARE_PRIVATE(QWin32PrintEngine) public: - QWin32PrintEngine(QPrinter::PrinterMode mode); + QWin32PrintEngine(QPrinter::PrinterMode mode, const QString &deviceId); // override QWin32PaintEngine bool begin(QPaintDevice *dev); diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index 83ebb15a12..e2138512cc 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -146,7 +146,7 @@ void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterI } if (outputFormat == QPrinter::NativeFormat) { - printEngine = ps->createNativePrintEngine(printerMode); + printEngine = ps->createNativePrintEngine(printerMode, printerName); paintEngine = ps->createPaintEngine(printEngine, printerMode); } else { QPdfPrintEngine *pdfEngine = new QPdfPrintEngine(printerMode); @@ -156,7 +156,6 @@ void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterI use_default_engine = true; had_default_engines = true; - setProperty(QPrintEngine::PPK_PrinterName, printerName); validPrinter = true; } -- cgit v1.2.3