forked from pool/libqt5-qtbase
a9a0afee32
- Add patch to fix boo#1096328, printer settings not remembered: * 0001-Unix-print-dialog-Properly-initialize-duplex.patch OBS-URL: https://build.opensuse.org/request/show/641330 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=89
89 lines
3.5 KiB
Diff
89 lines
3.5 KiB
Diff
From 82f21f3d47cf4bb3be71bf2eda3f971b43acc76d Mon Sep 17 00:00:00 2001
|
|
From: Mischa Salle <mischa.salle@gmail.com>
|
|
Date: Thu, 27 Sep 2018 13:22:47 +0200
|
|
Subject: [PATCH] Unix print dialog: Properly initialize duplex
|
|
|
|
This is a backport of https://codereview.qt-project.org/#/c/226881/ and fixes
|
|
https://bugzilla.suse.com/show_bug.cgi?id=1096328
|
|
---
|
|
src/printsupport/dialogs/qprintdialog_unix.cpp | 32 ++++++++++++++++++++++----
|
|
1 file changed, 27 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
|
|
index 86daea3b02..53d26bf9fc 100644
|
|
--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
|
|
+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
|
|
@@ -240,6 +240,10 @@ public:
|
|
QDialogButtonBox *buttons;
|
|
QPushButton *collapseButton;
|
|
QPrinter::OutputFormat printerOutputFormat;
|
|
+private:
|
|
+ void setExplicitDuplexMode(QPrint::DuplexMode duplexMode);
|
|
+ // duplex mode explicitly set by user, QPrint::DuplexAuto otherwise
|
|
+ QPrint::DuplexMode explicitDuplexMode;
|
|
};
|
|
|
|
#if QT_CONFIG(cups)
|
|
@@ -479,7 +483,8 @@ void QPrintPropertiesDialog::accept()
|
|
|
|
*/
|
|
QPrintDialogPrivate::QPrintDialogPrivate()
|
|
- : top(nullptr), bottom(nullptr), buttons(nullptr), collapseButton(nullptr)
|
|
+ : top(nullptr), bottom(nullptr), buttons(nullptr), collapseButton(nullptr),
|
|
+ explicitDuplexMode(QPrint::DuplexAuto)
|
|
{
|
|
initResources();
|
|
}
|
|
@@ -540,6 +545,10 @@ void QPrintDialogPrivate::init()
|
|
q, SLOT(_q_togglePageSetCombo(bool)));
|
|
|
|
QObject::connect(collapseButton, SIGNAL(released()), q, SLOT(_q_collapseOrExpandDialog()));
|
|
+
|
|
+ QObject::connect(options.noDuplex, &QAbstractButton::clicked, q, [this] { setExplicitDuplexMode(QPrint::DuplexNone); });
|
|
+ QObject::connect(options.duplexLong, &QAbstractButton::clicked, q, [this] { setExplicitDuplexMode(QPrint::DuplexLongSide); });
|
|
+ QObject::connect(options.duplexShort, &QAbstractButton::clicked, q, [this] { setExplicitDuplexMode(QPrint::DuplexShortSide); });
|
|
}
|
|
|
|
// initialize printer options
|
|
@@ -559,13 +568,21 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma
|
|
else
|
|
options.grayscale->setChecked(true);
|
|
|
|
- switch (p->duplex()) {
|
|
- case QPrinter::DuplexNone:
|
|
+ // keep duplex value explicitly set by user, if any, and selected printer supports it;
|
|
+ // use device default otherwise
|
|
+ QPrint::DuplexMode duplex;
|
|
+ if (explicitDuplexMode != QPrint::DuplexAuto && supportedDuplexMode.contains(explicitDuplexMode))
|
|
+ duplex = explicitDuplexMode;
|
|
+ else
|
|
+ duplex = top->d->m_currentPrintDevice.defaultDuplexMode();
|
|
+
|
|
+ switch (duplex) {
|
|
+ case QPrint::DuplexNone:
|
|
options.noDuplex->setChecked(true); break;
|
|
- case QPrinter::DuplexLongSide:
|
|
+ case QPrint::DuplexLongSide:
|
|
case QPrinter::DuplexAuto:
|
|
options.duplexLong->setChecked(true); break;
|
|
- case QPrinter::DuplexShortSide:
|
|
+ case QPrint::DuplexShortSide:
|
|
options.duplexShort->setChecked(true); break;
|
|
}
|
|
options.copies->setValue(p->copyCount());
|
|
@@ -667,6 +684,11 @@ static bool isValidPagesString(const QString &pagesString) Q_DECL_NOTHROW
|
|
}
|
|
#endif
|
|
|
|
+void QPrintDialogPrivate::setExplicitDuplexMode(const QPrint::DuplexMode duplexMode)
|
|
+{
|
|
+ explicitDuplexMode = duplexMode;
|
|
+}
|
|
+
|
|
void QPrintDialogPrivate::setupPrinter()
|
|
{
|
|
// First setup the requested OutputFormat, Printer and Page Size first
|
|
--
|
|
2.16.4
|
|
|