summaryrefslogtreecommitdiffstats
path: root/tests/auto/printsupport/kernel
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-05-14 16:06:01 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-23 09:31:27 +0200
commit23fd348631cdec03736b5cd8bad2d877dddad38f (patch)
treecaa147fede27a634d24908190226af9fb4fb7296 /tests/auto/printsupport/kernel
parent7582bb51f39f2336e9d14b83206873bbb3e47de3 (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.cpp46
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()