From a4a58b7a03fe77037258d8d76817ba3cdd3e337f Mon Sep 17 00:00:00 2001 From: Debian Qt/KDE Maintainers Date: Sun, 16 Jun 2019 16:22:58 +0100 Subject: [PATCH] raw_printers Gbp-Pq: Name raw_printers.diff --- .../printsupport/cups/qcupsprintengine.cpp | 6 +++++- .../printsupport/cups/qppdprintdevice.cpp | 19 ++++++++----------- .../dialogs/qpagesetupdialog_unix.cpp | 6 ++++++ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp index 6c29a9970..c393229b1 100644 --- a/src/plugins/printsupport/cups/qcupsprintengine.cpp +++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp @@ -104,7 +104,11 @@ void QCupsPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &v break; case PPK_QPageLayout: { QPageLayout pageLayout = value.value(); - if (pageLayout.isValid() && (d->m_printDevice.isValidPageLayout(pageLayout, d->resolution) || d->m_printDevice.supportsCustomPageSizes())) { + if (pageLayout.isValid() && (d->m_printDevice.isValidPageLayout(pageLayout, d->resolution) + || d->m_printDevice.supportsCustomPageSizes() + || d->m_printDevice.supportedPageSizes().isEmpty())) { + // supportedPageSizes().isEmpty() because QPageSetupWidget::initPageSizes says + // "If no available printer page sizes, populate with all page sizes" d->m_pageLayout = pageLayout; d->setPageSize(pageLayout.pageSize()); } diff --git a/src/plugins/printsupport/cups/qppdprintdevice.cpp b/src/plugins/printsupport/cups/qppdprintdevice.cpp index f0a8105d2..53d3b5a49 100644 --- a/src/plugins/printsupport/cups/qppdprintdevice.cpp +++ b/src/plugins/printsupport/cups/qppdprintdevice.cpp @@ -71,7 +71,7 @@ QPpdPrintDevice::QPpdPrintDevice(const QString &id) m_cupsInstance = parts.at(1).toUtf8(); loadPrinter(); - if (m_cupsDest && m_ppd) { + if (m_cupsDest) { m_name = printerOption("printer-info"); m_location = printerOption("printer-location"); m_makeAndModel = printerOption("printer-make-and-model"); @@ -87,10 +87,6 @@ QPpdPrintDevice::QPpdPrintDevice(const QString &id) // Cups ppd_file_t variable_sizes custom_min custom_max // PPD MaxMediaWidth MaxMediaHeight m_supportsCustomPageSizes = type & CUPS_PRINTER_VARIABLE; - m_minimumPhysicalPageSize = QSize(m_ppd->custom_min[0], m_ppd->custom_min[1]); - m_maximumPhysicalPageSize = QSize(m_ppd->custom_max[0], m_ppd->custom_max[1]); - m_customMargins = QMarginsF(m_ppd->custom_margins[0], m_ppd->custom_margins[3], - m_ppd->custom_margins[2], m_ppd->custom_margins[1]); } } } @@ -107,7 +103,7 @@ QPpdPrintDevice::~QPpdPrintDevice() bool QPpdPrintDevice::isValid() const { - return m_cupsDest && m_ppd; + return m_cupsDest; } bool QPpdPrintDevice::isDefault() const @@ -152,8 +148,8 @@ void QPpdPrintDevice::loadPageSizes() const } } } - m_havePageSizes = true; } + m_havePageSizes = true; } QPageSize QPpdPrintDevice::defaultPageSize() const @@ -505,10 +501,11 @@ void QPpdPrintDevice::loadPrinter() ppdMarkDefaults(m_ppd); cupsMarkOptions(m_ppd, m_cupsDest->num_options, m_cupsDest->options); ppdLocalize(m_ppd); - } else { - cupsFreeDests(1, m_cupsDest); - m_cupsDest = 0; - m_ppd = 0; + + m_minimumPhysicalPageSize = QSize(m_ppd->custom_min[0], m_ppd->custom_min[1]); + m_maximumPhysicalPageSize = QSize(m_ppd->custom_max[0], m_ppd->custom_max[1]); + m_customMargins = QMarginsF(m_ppd->custom_margins[0], m_ppd->custom_margins[3], + m_ppd->custom_margins[2], m_ppd->custom_margins[1]); } } } diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp index 7e32f9aa5..3648d3fef 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp @@ -415,6 +415,12 @@ void QPageSetupWidget::setPrinter(QPrinter *printer, QPrintDevice *printDevice, initPageSizes(); updateWidget(); updateSavedValues(); + + if (m_ui.pageSizeCombo->currentIndex() == -1) { + // This can happen in raw printers that since they don't have a default + // page size none will get selected so just default to the first size (A4) + m_ui.pageSizeCombo->setCurrentIndex(0); + } } // Update the widget with the current settings -- 2.30.2