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 <Friedemann.Kleint@qt.io>
This commit is contained in:
parent
31190140c3
commit
8ebfe00f4a
@ -53,7 +53,7 @@ public:
|
||||
QCocoaPrinterSupport();
|
||||
~QCocoaPrinterSupport();
|
||||
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId = QString()) Q_DECL_OVERRIDE;
|
||||
QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
|
||||
|
||||
QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE;
|
||||
|
@ -54,9 +54,9 @@ QCocoaPrinterSupport::QCocoaPrinterSupport()
|
||||
QCocoaPrinterSupport::~QCocoaPrinterSupport()
|
||||
{ }
|
||||
|
||||
QPrintEngine *QCocoaPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode)
|
||||
QPrintEngine *QCocoaPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId)
|
||||
{
|
||||
return new QMacPrintEngine(printerMode);
|
||||
return new QMacPrintEngine(printerMode, deviceId);
|
||||
}
|
||||
|
||||
QPaintEngine *QCocoaPrinterSupport::createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode printerMode)
|
||||
|
@ -51,11 +51,15 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
extern QMarginsF qt_convertMargins(const QMarginsF &margins, QPageLayout::Unit fromUnits, QPageLayout::Unit toUnits);
|
||||
|
||||
QMacPrintEngine::QMacPrintEngine(QPrinter::PrinterMode mode) : QPaintEngine(*(new QMacPrintEnginePrivate))
|
||||
QMacPrintEngine::QMacPrintEngine(QPrinter::PrinterMode mode, const QString &deviceId)
|
||||
: QPaintEngine(*(new QMacPrintEnginePrivate))
|
||||
{
|
||||
Q_D(QMacPrintEngine);
|
||||
d->mode = mode;
|
||||
d->m_printDevice.reset(new QCocoaPrintDevice(QCocoaPrinterSupport().defaultPrintDeviceId()));
|
||||
QString id = deviceId;
|
||||
if (id.isEmpty())
|
||||
id = QCocoaPrinterSupport().defaultPrintDeviceId();
|
||||
d->m_printDevice.reset(new QCocoaPrintDevice(id));
|
||||
d->m_pageLayout.setPageSize(d->m_printDevice->defaultPageSize());
|
||||
d->initialize();
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ class QMacPrintEngine : public QPaintEngine, public QPrintEngine
|
||||
{
|
||||
Q_DECLARE_PRIVATE(QMacPrintEngine)
|
||||
public:
|
||||
QMacPrintEngine(QPrinter::PrinterMode mode);
|
||||
QMacPrintEngine(QPrinter::PrinterMode mode, const QString &deviceId);
|
||||
|
||||
Qt::HANDLE handle() const;
|
||||
|
||||
|
@ -57,11 +57,11 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
extern QMarginsF qt_convertMargins(const QMarginsF &margins, QPageLayout::Unit fromUnits, QPageLayout::Unit toUnits);
|
||||
|
||||
QCupsPrintEngine::QCupsPrintEngine(QPrinter::PrinterMode m)
|
||||
QCupsPrintEngine::QCupsPrintEngine(QPrinter::PrinterMode m, const QString &deviceId)
|
||||
: QPdfPrintEngine(*new QCupsPrintEnginePrivate(m))
|
||||
{
|
||||
Q_D(QCupsPrintEngine);
|
||||
d->setupDefaultPrinter();
|
||||
d->changePrinter(deviceId);
|
||||
state = QPrinter::Idle;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ class QCupsPrintEngine : public QPdfPrintEngine
|
||||
{
|
||||
Q_DECLARE_PRIVATE(QCupsPrintEngine)
|
||||
public:
|
||||
QCupsPrintEngine(QPrinter::PrinterMode m);
|
||||
QCupsPrintEngine(QPrinter::PrinterMode m, const QString &deviceId);
|
||||
virtual ~QCupsPrintEngine();
|
||||
|
||||
// reimplementations QPdfPrintEngine
|
||||
|
@ -63,9 +63,9 @@ QCupsPrinterSupport::~QCupsPrinterSupport()
|
||||
{
|
||||
}
|
||||
|
||||
QPrintEngine *QCupsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode)
|
||||
QPrintEngine *QCupsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId)
|
||||
{
|
||||
return new QCupsPrintEngine(printerMode);
|
||||
return new QCupsPrintEngine(printerMode, (deviceId.isEmpty() ? defaultPrintDeviceId() : deviceId));
|
||||
}
|
||||
|
||||
QPaintEngine *QCupsPrinterSupport::createPaintEngine(QPrintEngine *engine, QPrinter::PrinterMode printerMode)
|
||||
|
@ -64,7 +64,7 @@ public:
|
||||
QCupsPrinterSupport();
|
||||
~QCupsPrinterSupport();
|
||||
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId = QString()) Q_DECL_OVERRIDE;
|
||||
QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode) Q_DECL_OVERRIDE;
|
||||
|
||||
QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE;
|
||||
|
@ -55,9 +55,9 @@ QWindowsPrinterSupport::~QWindowsPrinterSupport()
|
||||
{
|
||||
}
|
||||
|
||||
QPrintEngine *QWindowsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode)
|
||||
QPrintEngine *QWindowsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId)
|
||||
{
|
||||
return new QWin32PrintEngine(printerMode);
|
||||
return new QWin32PrintEngine(printerMode, deviceId);
|
||||
}
|
||||
|
||||
QPaintEngine *QWindowsPrinterSupport::createPaintEngine(QPrintEngine *engine, QPrinter::PrinterMode printerMode)
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
QWindowsPrinterSupport();
|
||||
~QWindowsPrinterSupport();
|
||||
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE;
|
||||
QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode, const QString &deviceId = QString()) Q_DECL_OVERRIDE;
|
||||
QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode) Q_DECL_OVERRIDE;
|
||||
|
||||
QPrintDevice createPrintDevice(const QString &id) Q_DECL_OVERRIDE;
|
||||
|
@ -68,7 +68,7 @@ QPlatformPrinterSupport::~QPlatformPrinterSupport()
|
||||
{
|
||||
}
|
||||
|
||||
QPrintEngine *QPlatformPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode)
|
||||
QPrintEngine *QPlatformPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode, const QString &)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user