From 710530bc553ade8c4b8b6be1872f56bdc86b5321 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 8 Sep 2014 15:58:03 +0200 Subject: Fix too fast zooming in QTextEdit with smooth scrolling events Do not zoom 1pt on every single wheel-event, but instead scale the zoom with the size of the angle delta. Change-Id: Idbe17356c7845ebd0039f655d3e611e71c6f0dd6 Reviewed-by: Shawn Rutledge --- .../widgets/widgets/qtextedit/tst_qtextedit.cpp | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests') diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index fbd8b46466..ea27405fb3 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -211,6 +211,10 @@ private slots: void findWithRegExpReturnsFalseIfNoMoreResults(); #endif +#ifndef QT_NO_WHEELEVENT + void wheelEvent(); +#endif + private: void createSelection(); int blockCount() const; @@ -2564,5 +2568,39 @@ void tst_QTextEdit::findWithRegExpReturnsFalseIfNoMoreResults() } #endif +#ifndef QT_NO_WHEELEVENT + +class TextEdit : public QTextEdit +{ +public: + TextEdit(QWidget *parent = 0) + : QTextEdit(parent) + {} + void wheelEvent(QWheelEvent *event) + { + QTextEdit::wheelEvent(event); + } +}; + +void tst_QTextEdit::wheelEvent() +{ + TextEdit ed(0); + ed.setPlainText(QStringLiteral("Line\nLine\nLine\n")); + ed.setReadOnly(true); + + float defaultFontSize = ed.font().pointSizeF(); + QWheelEvent wheelUp(QPointF(), QPointF(), QPoint(), QPoint(0, 120), 120, Qt::Vertical, Qt::NoButton, Qt::ControlModifier); + ed.wheelEvent(&wheelUp); + + QCOMPARE(defaultFontSize + 1, ed.font().pointSizeF()); + + QWheelEvent wheelHalfDown(QPointF(), QPointF(), QPoint(), QPoint(0, -60), -60, Qt::Vertical, Qt::NoButton, Qt::ControlModifier); + ed.wheelEvent(&wheelHalfDown); + + QCOMPARE(defaultFontSize + 0.5, ed.font().pointSizeF()); +} + +#endif + QTEST_MAIN(tst_QTextEdit) #include "tst_qtextedit.moc" -- cgit v1.2.3