diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-09-08 15:58:03 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-09-23 15:59:38 +0200 |
commit | 710530bc553ade8c4b8b6be1872f56bdc86b5321 (patch) | |
tree | d27b90c6292fcf9fd69f9a194da2694cb6ae4c04 /src/widgets/widgets/qplaintextedit.cpp | |
parent | a2b453502c657dcc4e6926e4cdfec9d143bdb90c (diff) |
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 <shawn.rutledge@digia.com>
Diffstat (limited to 'src/widgets/widgets/qplaintextedit.cpp')
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 3f34a08b5e..3959cb6c3f 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -2276,11 +2276,8 @@ void QPlainTextEdit::wheelEvent(QWheelEvent *e) Q_D(QPlainTextEdit); if (!(d->control->textInteractionFlags() & Qt::TextEditable)) { if (e->modifiers() & Qt::ControlModifier) { - const int delta = e->delta(); - if (delta < 0) - zoomOut(); - else if (delta > 0) - zoomIn(); + float delta = e->angleDelta().y() / 120.f; + zoomInF(delta); return; } } @@ -2300,12 +2297,7 @@ void QPlainTextEdit::wheelEvent(QWheelEvent *e) */ void QPlainTextEdit::zoomIn(int range) { - QFont f = font(); - const int newSize = f.pointSize() + range; - if (newSize <= 0) - return; - f.setPointSize(newSize); - setFont(f); + zoomInF(range); } /*! @@ -2321,7 +2313,22 @@ void QPlainTextEdit::zoomIn(int range) */ void QPlainTextEdit::zoomOut(int range) { - zoomIn(-range); + zoomInF(-range); +} + +/*! + \internal +*/ +void QPlainTextEdit::zoomInF(float range) +{ + if (range == 0.f) + return; + QFont f = font(); + const float newSize = f.pointSizeF() + range; + if (newSize <= 0) + return; + f.setPointSizeF(newSize); + setFont(f); } #ifndef QT_NO_CONTEXTMENU |