summaryrefslogtreecommitdiffstats
path: root/src/printsupport
diff options
context:
space:
mode:
Diffstat (limited to 'src/printsupport')
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix.cpp82
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix_p.h2
-rw-r--r--src/printsupport/dialogs/qprintdialog_unix.cpp2
-rw-r--r--src/printsupport/kernel/qprinter.cpp4
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