diff --git a/src/tools/pin/pinwidget.cpp b/src/tools/pin/pinwidget.cpp index 2ead15e9..542e74fd 100644 --- a/src/tools/pin/pinwidget.cpp +++ b/src/tools/pin/pinwidget.cpp @@ -109,6 +109,8 @@ bool PinWidget::scrollEvent(QWheelEvent* event) m_currentStepScaleFactor = 1.0; m_expanding = false; } + + m_sizeChanged = true; update(); return true; } @@ -165,22 +167,27 @@ bool PinWidget::event(QEvent* event) void PinWidget::paintEvent(QPaintEvent* event) { - const auto aspectRatio = - m_expanding ? Qt::KeepAspectRatioByExpanding : Qt::KeepAspectRatio; - const auto transformType = ConfigHandler().antialiasingPinZoom() - ? Qt::SmoothTransformation - : Qt::FastTransformation; - const qreal iw = m_pixmap.width(); - const qreal ih = m_pixmap.height(); - const qreal nw = qBound(MIN_SIZE, - iw * m_currentStepScaleFactor * m_scaleFactor, - static_cast(maximumWidth())); - const qreal nh = qBound(MIN_SIZE, - ih * m_currentStepScaleFactor * m_scaleFactor, - static_cast(maximumHeight())); - const QPixmap pix = m_pixmap.scaled(nw, nh, aspectRatio, transformType); - m_label->setPixmap(pix); - adjustSize(); + if (m_sizeChanged) { + const auto aspectRatio = + m_expanding ? Qt::KeepAspectRatioByExpanding : Qt::KeepAspectRatio; + const auto transformType = ConfigHandler().antialiasingPinZoom() + ? Qt::SmoothTransformation + : Qt::FastTransformation; + const qreal iw = m_pixmap.width(); + const qreal ih = m_pixmap.height(); + const qreal nw = qBound(MIN_SIZE, + iw * m_currentStepScaleFactor * m_scaleFactor, + static_cast(maximumWidth())); + const qreal nh = qBound(MIN_SIZE, + ih * m_currentStepScaleFactor * m_scaleFactor, + static_cast(maximumHeight())); + + const QPixmap pix = m_pixmap.scaled(nw, nh, aspectRatio, transformType); + + m_label->setPixmap(pix); + adjustSize(); + m_sizeChanged = false; + } } void PinWidget::pinchTriggered(QPinchGesture* gesture) @@ -195,5 +202,6 @@ void PinWidget::pinchTriggered(QPinchGesture* gesture) m_currentStepScaleFactor = 1; m_expanding = false; } + m_sizeChanged = true; update(); } diff --git a/src/tools/pin/pinwidget.h b/src/tools/pin/pinwidget.h index be626237..0e17ebaf 100644 --- a/src/tools/pin/pinwidget.h +++ b/src/tools/pin/pinwidget.h @@ -45,4 +45,5 @@ private: bool m_expanding{ false }; qreal m_scaleFactor{ 1 }; qreal m_currentStepScaleFactor{ 1 }; + bool m_sizeChanged{ false }; };