Ensure that printer orientation is preserved

After setting the printer name the initialization is no longer done for
a printer with a name. Instead doReinit() method is called to preserve
the orientation (set with setOrientation() method before calling
setPrinterName()). Before the orientation was changed back to default
when setPrinterName() method was called ignoring the orientation set.

Updated also the autotest because the case:
taskQTBUG4497_reusePrinterOnDifferentFiles() is no longer expected to
fail on Windows.

Task-number: QTBUG-26008
Change-Id: Ia6bc9ae14d79a646e61bfc97652f9f5af90738b3
Reviewed-by: Andy Shaw
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
This commit is contained in:
Titta Heikkala 2012-08-09 10:54:09 +03:00 committed by Qt by Nokia
parent f7de5b0923
commit 1cebd906af
2 changed files with 17 additions and 2 deletions

View File

@ -1174,6 +1174,16 @@ void QWin32PrintEnginePrivate::doReinit()
if (state == QPrinter::Active) {
reinit = true;
} else {
if (!name.isEmpty()) {
HANDLE hCheckPrinter;
if (!OpenPrinter((LPWSTR)name.utf16(), (LPHANDLE)&hCheckPrinter, 0)) {
initialize();
return;
} else {
ClosePrinter(hCheckPrinter);
hCheckPrinter = 0;
}
}
resetDC();
initDevRects();
reinit = false;
@ -1296,9 +1306,12 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &
case PPK_PrinterName:
d->name = value.toString();
if(d->name.isEmpty())
if (d->name.isEmpty()) {
d->queryDefault();
d->initialize();
d->initialize();
} else {
d->doReinit();
}
break;
case PPK_Resolution:

View File

@ -985,7 +985,9 @@ void tst_QPrinter::taskQTBUG4497_reusePrinterOnDifferentFiles()
QFile file2("out2.ps");
QVERIFY(file2.open(QIODevice::ReadOnly));
#ifndef Q_OS_WIN
QEXPECT_FAIL("", "QTBUG-22562, QTBUG-22296", Abort);
#endif
QCOMPARE(file1.readAll(), file2.readAll());
}