diff options
Diffstat (limited to 'src/printsupport')
-rw-r--r-- | src/printsupport/dialogs/qpagesetupdialog_unix.cpp | 82 | ||||
-rw-r--r-- | src/printsupport/dialogs/qpagesetupdialog_unix_p.h | 2 | ||||
-rw-r--r-- | src/printsupport/dialogs/qprintdialog_unix.cpp | 2 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 4 |
4 files changed, 50 insertions, 40 deletions
diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp index c1b9828a23..6801863a3a 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp @@ -472,58 +472,68 @@ void QPageSetupWidget::selectPdfPsPrinter(const QPrinter *p) // Updates size/preview after the combobox has been changed. void QPageSetupWidget::_q_paperSizeChanged() { - QVariant val = widget.paperSize->itemData(widget.paperSize->currentIndex()); - int index = m_printer->pageSize(); - if (val.type() == QVariant::Int) { - index = val.toInt(); - } - if (m_blockSignals) return; m_blockSignals = true; - QPrinter::PaperSize size = QPrinter::PaperSize(index); - QPrinter::Orientation orientation = widget.portrait->isChecked() - ? QPrinter::Portrait - : QPrinter::Landscape; - - bool custom = size == QPrinter::Custom; - -#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) - custom = custom && m_cups && (m_printer->paperName() == QLatin1String("Custom")); -#endif - - widget.paperWidth->setEnabled(custom); - widget.paperHeight->setEnabled(custom); - widget.widthLabel->setEnabled(custom); - widget.heightLabel->setEnabled(custom); - if (custom) { - m_paperSize.setWidth( widget.paperWidth->value() * m_currentMultiplier); - m_paperSize.setHeight( widget.paperHeight->value() * m_currentMultiplier); - m_pagePreview->setPaperSize(m_paperSize); - } else { - Q_ASSERT(m_printer); -#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) - if (m_cups && QCUPSSupport::isAvailable()) { // combobox is filled with cups based data + bool custom = false; + QVariant val = widget.paperSize->itemData(widget.paperSize->currentIndex()); + QPrinter::Orientation orientation = widget.portrait->isChecked() ? QPrinter::Portrait : QPrinter::Landscape; + + if (m_cups) { + // OutputFormat == NativeFormat, data is QString Cups paper name + QByteArray cupsPageSize = val.toByteArray(); + custom = (cupsPageSize == QByteArrayLiteral("Custom")); +#ifndef QT_NO_CUPS + if (!custom) { QCUPSSupport cups; - QByteArray cupsPageSize = widget.paperSize->itemData(widget.paperSize->currentIndex()).toByteArray(); - m_paperSize = cups.paperRect(cupsPageSize).size(); - if (orientation == QPrinter::Landscape) - m_paperSize = QSizeF(m_paperSize.height(), m_paperSize.width()); // swap + cups.setCurrentPrinter(m_printer->printerName()); + m_paperSize = sizeForOrientation(orientation, cups.paperRect(cupsPageSize).size()); } - else #endif + } else { + // OutputFormat == PdfFormat, data is QPrinter::PageSize + QPrinter::PaperSize size = QPrinter::PaperSize(val.toInt()); + custom = size == QPrinter::Custom; + if (!custom) m_paperSize = qt_printerPaperSize(orientation, size, QPrinter::Point, 1); + } - m_pagePreview->setPaperSize(m_paperSize); + if (custom) { + // Convert input custom size Units to Points + m_paperSize = QSizeF(widget.paperWidth->value() * m_currentMultiplier, + widget.paperHeight->value() * m_currentMultiplier); + } else { + // Display standard size Points as Units widget.paperWidth->setValue(m_paperSize.width() / m_currentMultiplier); widget.paperHeight->setValue(m_paperSize.height() / m_currentMultiplier); } + + m_pagePreview->setPaperSize(m_paperSize); + + widget.paperWidth->setEnabled(custom); + widget.paperHeight->setEnabled(custom); + widget.widthLabel->setEnabled(custom); + widget.heightLabel->setEnabled(custom); + m_blockSignals = false; } void QPageSetupWidget::_q_pageOrientationChanged() { - if (QPrinter::PaperSize(widget.paperSize->currentIndex()) == QPrinter::Custom) { + bool custom = false; + QVariant val = widget.paperSize->itemData(widget.paperSize->currentIndex()); + + if (m_cups) { + // OutputFormat == NativeFormat, data is QString Cups paper name + QByteArray cupsPageSize = val.toByteArray(); + custom = (cupsPageSize == QByteArrayLiteral("Custom")); + } else { + // OutputFormat == PdfFormat, data is QPrinter::PageSize + QPrinter::PaperSize size = QPrinter::PaperSize(val.toInt()); + custom = size == QPrinter::Custom; + } + + if (custom) { double tmp = widget.paperWidth->value(); widget.paperWidth->setValue(widget.paperHeight->value()); widget.paperHeight->setValue(tmp); diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix_p.h b/src/printsupport/dialogs/qpagesetupdialog_unix_p.h index b96d300ab9..4245c3ae5f 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_unix_p.h +++ b/src/printsupport/dialogs/qpagesetupdialog_unix_p.h @@ -94,7 +94,7 @@ private: qreal m_topMargin; qreal m_rightMargin; qreal m_bottomMargin; - QSizeF m_paperSize; + QSizeF m_paperSize; // In QPrinter::Point qreal m_currentMultiplier; bool m_blockSignals; bool m_cups; diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp index a903d170f2..2ec1088bb4 100644 --- a/src/printsupport/dialogs/qprintdialog_unix.cpp +++ b/src/printsupport/dialogs/qprintdialog_unix.cpp @@ -929,7 +929,7 @@ void QUnixPrintWidgetPrivate::_q_btnPropertiesClicked() if (!propertiesDialog) setupPrinterProperties(); propertiesDialog->exec(); - if (propertiesDialog->result() == QDialog::Rejected) { + if (!propertiesDialogShown && propertiesDialog->result() == QDialog::Rejected) { // If properties dialog was rejected the dialog is deleted and // the properties are set to defaults when printer is setup delete propertiesDialog; diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index 5eb840c52a..f23708045d 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -92,7 +92,7 @@ static const float qt_paperSizes[][2] = { {125, 176}, // B6 {88, 125}, // B7 {62, 88}, // B8 - {33, 62}, // B9 + {44, 62}, // B9 {163, 229}, // C5E {105, 241}, // US Common {110, 220}, // DLE @@ -448,7 +448,7 @@ void QPrinterPrivate::setProperty(QPrintEngine::PrintEnginePropertyKey key, cons \value B6 125 x 176 mm \value B7 88 x 125 mm \value B8 62 x 88 mm - \value B9 33 x 62 mm + \value B9 44 x 62 mm \value B10 31 x 44 mm \value C5E 163 x 229 mm \value Comm10E 105 x 241 mm, U.S. Common 10 Envelope |