diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-05-14 16:06:01 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-23 09:31:27 +0200 |
commit | 23fd348631cdec03736b5cd8bad2d877dddad38f (patch) | |
tree | caa147fede27a634d24908190226af9fb4fb7296 /tests/auto/printsupport/kernel | |
parent | 7582bb51f39f2336e9d14b83206873bbb3e47de3 (diff) |
QPrintPreviewDialog: Prevent changing of page in resize handling.
Task-number: QTBUG-14517
Change-Id: I59e444eed8d44be9fb7213fdbab4be473d595be8
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Diffstat (limited to 'tests/auto/printsupport/kernel')
-rw-r--r-- | tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp index b117edddd4..0261224543 100644 --- a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp +++ b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp @@ -45,6 +45,8 @@ #include <qpagesetupdialog.h> #include <qpainter.h> #include <qprintdialog.h> +#include <qprintpreviewdialog.h> +#include <qprintpreviewwidget.h> #include <qprinterinfo.h> #include <qvariant.h> #include <qpainter.h> @@ -98,6 +100,7 @@ private slots: void testMargins_data(); void testMargins(); void testPageSetupDialog(); + void testPrintPreviewDialog(); void testMulitpleSets_data(); void testMulitpleSets(); void testPageMargins_data(); @@ -242,6 +245,49 @@ void tst_QPrinter::testPageSetupDialog() } } +// A preview dialog showing 4 pages for testPrintPreviewDialog(). + +class MyPreviewDialog : public QPrintPreviewDialog { + Q_OBJECT +public: + MyPreviewDialog(QPrinter *p) : QPrintPreviewDialog(p) + { + connect(this, SIGNAL(paintRequested(QPrinter*)), this, SLOT(slotPaintRequested(QPrinter*))); + } + +public slots: + void slotPaintRequested(QPrinter *p); +}; + +void MyPreviewDialog::slotPaintRequested(QPrinter *p) +{ + enum { pageCount = 4 }; + QPainter painter; + painter.begin(p); + for (int i = 0; i < pageCount; ++i) { + const QRect f = p->pageRect(QPrinter::DevicePixel).toRect(); + painter.fillRect(f, Qt::white); + painter.drawText(f.center(), QString::fromLatin1("Page %1").arg(i + 1)); + if (i != pageCount - 1) + p->newPage(); + } + painter.end(); +} + +void tst_QPrinter::testPrintPreviewDialog() +{ + // QTBUG-14517: Showing the dialog with Qt::WindowMaximized caused it to switch to + // page 2 due to the scrollbar logic (besides testing for crashes). + QPrinter printer; + MyPreviewDialog dialog(&printer); + dialog.setWindowState(Qt::WindowMaximized); + dialog.show(); + QVERIFY(QTest::qWaitForWindowExposed(&dialog)); + QPrintPreviewWidget *widget = dialog.findChild<QPrintPreviewWidget *>(); + QVERIFY(widget); + QCOMPARE(widget->currentPage(), 1); +} + #ifdef Q_OS_WIN // QPrinter::winPageSize(): Windows only. void tst_QPrinter::testPageSize() |