summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport.cpp5
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport_p.h2
-rw-r--r--src/plugins/printsupport/cups/qppdprintdevice.cpp9
3 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp
index 19e1df31f6..42a7a821f2 100644
--- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp
+++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp
@@ -175,6 +175,11 @@ QStringList QCupsPrinterSupport::availablePrintDeviceIds() const
QString QCupsPrinterSupport::defaultPrintDeviceId() const
{
+ return staticDefaultPrintDeviceId();
+}
+
+QString QCupsPrinterSupport::staticDefaultPrintDeviceId()
+{
QString printerId;
cups_dest_t *dests;
int count = cupsGetDests(&dests);
diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h
index 42de28aec0..c2b4895c7f 100644
--- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h
+++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h
@@ -71,6 +71,8 @@ public:
QStringList availablePrintDeviceIds() const override;
QString defaultPrintDeviceId() const override;
+ static QString staticDefaultPrintDeviceId();
+
private:
QString cupsOption(int i, const QString &key) const;
};
diff --git a/src/plugins/printsupport/cups/qppdprintdevice.cpp b/src/plugins/printsupport/cups/qppdprintdevice.cpp
index 51b93a0016..ea6336c4d1 100644
--- a/src/plugins/printsupport/cups/qppdprintdevice.cpp
+++ b/src/plugins/printsupport/cups/qppdprintdevice.cpp
@@ -39,6 +39,8 @@
#include "qppdprintdevice.h"
+#include "qcupsprintersupport_p.h"
+
#include <QtCore/QMimeDatabase>
#include <qdebug.h>
@@ -118,7 +120,12 @@ bool QPpdPrintDevice::isValid() const
bool QPpdPrintDevice::isDefault() const
{
- return printerTypeFlags() & CUPS_PRINTER_DEFAULT;
+ // There seems to be a bug in cups in which printerTypeFlags
+ // returns CUPS_PRINTER_DEFAULT based only on system values, ignoring user lpoptions
+ // so we can't use that. And also there seems to be a bug in which dests returned
+ // by cupsGetNamedDest don't have is_default set at all so we can't use that either
+ // so go the long route and compare our id against the defaultPrintDeviceId
+ return id() == QCupsPrinterSupport::staticDefaultPrintDeviceId();
}
QPrint::DeviceState QPpdPrintDevice::state() const