summaryrefslogtreecommitdiffstats
path: root/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp')
-rw-r--r--tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp147
1 files changed, 94 insertions, 53 deletions
diff --git a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
index 7f874a843d..c3785efe18 100644
--- a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
+++ b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
@@ -1,39 +1,14 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+
+#include <QTest>
#include <qcoreapplication.h>
#include <qdebug.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
#if QT_CONFIG(printdialog)
-#include <qabstractprintdialog.h>
+#include <qprintdialog.h>
#include <qprinter.h>
#endif
@@ -49,6 +24,8 @@ private slots:
void getSetCheck();
void setMinMax();
void setFromTo();
+
+ void hideNativeByDestruction();
#endif
};
@@ -60,31 +37,63 @@ void tst_QAbstractPrintDialog::initTestCase()
#else
-class MyAbstractPrintDialog : public QAbstractPrintDialog
+class MyPrintDialog : public QPrintDialog
{
public:
- MyAbstractPrintDialog(QPrinter *p) : QAbstractPrintDialog(p) {}
- int exec() { return 0; }
+ MyPrintDialog(QPrinter *p)
+ : QPrintDialog(p)
+ {
+ }
+ int exec() override { return 0; }
+
+ void resetAllOptions()
+ {
+ setOption(QAbstractPrintDialog::PrintToFile, false);
+ setOption(QAbstractPrintDialog::PrintSelection, false);
+ setOption(QAbstractPrintDialog::PrintPageRange, false);
+ setOption(QAbstractPrintDialog::PrintShowPageSize, false);
+ setOption(QAbstractPrintDialog::PrintCollateCopies, false);
+ setOption(QAbstractPrintDialog::PrintCurrentPage, false);
+ }
};
// Testing get/set functions
void tst_QAbstractPrintDialog::getSetCheck()
{
QPrinter printer;
- MyAbstractPrintDialog obj1(&printer);
+ MyPrintDialog obj1(&printer);
QCOMPARE(obj1.printer(), &printer);
- // PrintDialogOptions QAbstractPrintDialog::enabledOptions()
- // void QAbstractPrintDialog::setEnabledOptions(PrintDialogOptions)
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None));
- QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None), obj1.enabledOptions());
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintToFile));
- QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintToFile), obj1.enabledOptions());
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection));
- QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection), obj1.enabledOptions());
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintPageRange));
- QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintPageRange), obj1.enabledOptions());
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintCollateCopies));
- QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintCollateCopies), obj1.enabledOptions());
+
+ // QPrintDialog::options APIs
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
+ |QAbstractPrintDialog::PrintPageRange
+ |QAbstractPrintDialog::PrintShowPageSize
+ |QAbstractPrintDialog::PrintCollateCopies);
+ obj1.setOptions(QAbstractPrintDialog::PrintSelection
+ |QAbstractPrintDialog::PrintCurrentPage);
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintSelection
+ |QAbstractPrintDialog::PrintCurrentPage);
+ obj1.resetAllOptions();
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintDialogOptions());
+
+ obj1.setOption(QAbstractPrintDialog::PrintToFile);
+ QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintToFile));
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile);
+ obj1.setOption(QAbstractPrintDialog::PrintSelection);
+ QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintSelection));
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
+ |QAbstractPrintDialog::PrintSelection);
+ obj1.setOption(QAbstractPrintDialog::PrintPageRange);
+ QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintPageRange));
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
+ |QAbstractPrintDialog::PrintSelection
+ |QAbstractPrintDialog::PrintPageRange);
+ obj1.setOption(QAbstractPrintDialog::PrintCollateCopies);
+ QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintCollateCopies));
+ QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
+ |QAbstractPrintDialog::PrintSelection
+ |QAbstractPrintDialog::PrintPageRange
+ |QAbstractPrintDialog::PrintCollateCopies);
// PrintRange QAbstractPrintDialog::printRange()
// void QAbstractPrintDialog::setPrintRange(PrintRange)
@@ -99,22 +108,23 @@ void tst_QAbstractPrintDialog::getSetCheck()
void tst_QAbstractPrintDialog::setMinMax()
{
QPrinter printer;
- MyAbstractPrintDialog obj1(&printer);
- obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None));
+ MyPrintDialog obj1(&printer);
+ obj1.resetAllOptions();
+
QCOMPARE(obj1.minPage(), 0);
QCOMPARE(obj1.maxPage(), INT_MAX);
- QVERIFY(!obj1.isOptionEnabled(QAbstractPrintDialog::PrintPageRange));
+ QVERIFY(!obj1.testOption(QAbstractPrintDialog::PrintPageRange));
obj1.setMinMax(2,5);
QCOMPARE(obj1.minPage(), 2);
QCOMPARE(obj1.maxPage(), 5);
- QVERIFY(obj1.enabledOptions() & QAbstractPrintDialog::PrintPageRange);
- QVERIFY(obj1.isOptionEnabled(QAbstractPrintDialog::PrintPageRange));
+ QVERIFY(obj1.options() & QAbstractPrintDialog::PrintPageRange);
+ QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintPageRange));
}
void tst_QAbstractPrintDialog::setFromTo()
{
QPrinter printer;
- MyAbstractPrintDialog obj1(&printer);
+ MyPrintDialog obj1(&printer);
QCOMPARE(obj1.fromPage(), 0);
QCOMPARE(obj1.toPage(), 0);
obj1.setMinMax(0,0);
@@ -127,6 +137,37 @@ void tst_QAbstractPrintDialog::setFromTo()
QCOMPARE(obj1.maxPage(), 50);
}
+void tst_QAbstractPrintDialog::hideNativeByDestruction()
+{
+#ifdef Q_OS_WINDOWS
+ QSKIP("This test fails on windows, the QPrintDialog::setVisible implementation blocks");
+#endif
+
+ QWidget window;
+ QWidget *child = new QWidget(&window);
+ QPointer<QPrintDialog> dialog = new QPrintDialog(child);
+ // Make it application modal so that we don't end up with a sheet on macOS
+ dialog->setWindowModality(Qt::ApplicationModal);
+ window.show();
+ QVERIFY(QTest::qWaitForWindowActive(&window));
+ dialog->open();
+
+ // We test that the dialog opens and closes by watching the activation of the
+ // transient parent window. If it doesn't deactivate, then we have to skip.
+ const auto windowActive = [&window]{ return window.isActiveWindow(); };
+ const auto windowInactive = [&window]{ return !window.isActiveWindow(); };
+ if (!QTest::qWaitFor(windowInactive, 2000))
+ QSKIP("Dialog didn't activate");
+
+ // This should destroy the dialog and close the native window
+ child->deleteLater();
+ QTRY_VERIFY(!dialog);
+ // If the native window is still open, then the transient parent can't become
+ // active
+ window.activateWindow();
+ QVERIFY(QTest::qWaitFor(windowActive));
+}
+
#endif
QTEST_MAIN(tst_QAbstractPrintDialog)