diff --git a/scribus/scribusview.cpp b/scribus/scribusview.cpp index 70c93cbd25..3398b5764e 100644 --- a/scribus/scribusview.cpp +++ b/scribus/scribusview.cpp @@ -3158,7 +3158,12 @@ void ScribusView::wheelEvent(QWheelEvent *w) if (w->modifiers() == Qt::ControlModifier) { FPoint mp = m_canvas->globalToCanvas(w->globalPos()); - w->delta() > 0 ? slotZoomIn(mp.x(), mp.y() , true) : slotZoomOut(mp.x(), mp.y(), true); + wheelAccumulatedDelta += w->delta(); + if (abs(wheelAccumulatedDelta) >= QWheelEvent::DefaultDeltasPerStep) + { + wheelAccumulatedDelta > 0 ? slotZoomIn(mp.x(), mp.y() , true) : slotZoomOut(mp.x(), mp.y(), true); + wheelAccumulatedDelta = 0; + } } else { diff --git a/scribus/scribusview.h b/scribus/scribusview.h index a3bbc46ab9..512e06f87f 100644 --- a/scribus/scribusview.h +++ b/scribus/scribusview.h @@ -298,6 +298,7 @@ public slots: // Public slots bool linkAfterDraw { false }; bool ImageAfterDraw { false }; QStack m_viewStates; + int wheelAccumulatedDelta { 0 }; private slots: void setZoom();