Skip to content

Commit

Permalink
Unix printing: Check for a valid page range before accepting dialog
Browse files Browse the repository at this point in the history
QPrintDialog::accept() checks for valid page ranges if the "Pages"
option is selected, but it did that before calling setupPrinter() to
read the settings from the user input. The page ranges would not yet
have been parsed at this point, so giving the error message whenever
this option is used even if a valid page range string is entered.

Perform an equivalent check before the dialog is accepted: that is,
that the entered page range string is not empty and that it can be
parsed to a valid QPageRanges.

Fixes: QTBUG-112346
Change-Id: Idc1a3154055a425967596d66f26477e41b0b138b
Reviewed-by: Albert Astals Cid <aacid@kde.org>
Reviewed-by: David Faure <david.faure@kdab.com>
(cherry picked from commit ec7589f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
  • Loading branch information
martenjj authored and Qt Cherry-pick Bot committed Dec 20, 2024
1 parent 8a63c9b commit 80e50e1
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/printsupport/dialogs/qprintdialog_unix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -991,13 +991,16 @@ void QPrintDialog::accept()
{
Q_D(QPrintDialog);
#if QT_CONFIG(cups) && QT_CONFIG(messagebox)
if (d->options.pagesRadioButton->isChecked() && printer()->pageRanges().isEmpty()) {
QMessageBox::critical(this, tr("Invalid Pages Definition"),
tr("%1 does not follow the correct syntax. Please use ',' to separate "
"ranges and pages, '-' to define ranges and make sure ranges do "
"not intersect with each other.").arg(d->options.pagesLineEdit->text()),
QMessageBox::Ok, QMessageBox::Ok);
return;
if (d->options.pagesRadioButton->isChecked()) {
const QString rangesText = d->options.pagesLineEdit->text();
if (rangesText.isEmpty() || QPageRanges::fromString(rangesText).isEmpty()) {
QMessageBox::critical(this, tr("Invalid Pages Definition"),
tr("%1 does not follow the correct syntax. Please use ',' to separate "
"ranges and pages, '-' to define ranges and make sure ranges do "
"not intersect with each other.").arg(rangesText),
QMessageBox::Ok, QMessageBox::Ok);
return;
}
}
if (d->top->d->m_duplexPpdOption && d->top->d->m_duplexPpdOption->conflicted) {
const QMessageBox::StandardButton answer = QMessageBox::warning(this, tr("Duplex Settings Conflicts"),
Expand Down

0 comments on commit 80e50e1

Please sign in to comment.