summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index e0eec585fa..39d7e48389 100644
--- a/src/printsupport/kernel/qprintengine_win.cpp
+++ b/src/printsupport/kernel/qprintengine_win.cpp
@@ -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: