From 4dd6444cb21688fcb1a19f0cb107e8198bdb1bad Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 1 Feb 2021 08:34:32 +0300 Subject: [PATCH] Added ability to call RippleButton::paintRipple with QPoint. --- ui/widgets/buttons.cpp | 13 ++++++++++--- ui/widgets/buttons.h | 10 +++++++++- ui/widgets/call_button.cpp | 2 +- ui/widgets/checkbox.cpp | 6 +----- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/ui/widgets/buttons.cpp b/ui/widgets/buttons.cpp index 10df939..a76aab0 100644 --- a/ui/widgets/buttons.cpp +++ b/ui/widgets/buttons.cpp @@ -120,6 +120,13 @@ void RippleButton::setForceRippled( update(); } +void RippleButton::paintRipple( + QPainter &p, + const QPoint &point, + const QColor *colorOverride) { + paintRipple(p, point.x(), point.y(), colorOverride); +} + void RippleButton::paintRipple(QPainter &p, int x, int y, const QColor *colorOverride) { if (_ripple) { _ripple->paint(p, x, y, width(), colorOverride); @@ -365,7 +372,7 @@ void RoundButton::paintEvent(QPaintEvent *e) { drawRect(_roundRectOver); } - paintRipple(p, rounded.x(), rounded.y()); + paintRipple(p, rounded.topLeft()); p.setFont(_st.font); const auto textTop = _st.padding.top() + _st.textTop; @@ -438,7 +445,7 @@ void IconButton::setRippleColorOverride(const style::color *colorOverride) { void IconButton::paintEvent(QPaintEvent *e) { Painter p(this); - paintRipple(p, _st.rippleAreaPosition.x(), _st.rippleAreaPosition.y(), _rippleColorOverride ? &(*_rippleColorOverride)->c : nullptr); + paintRipple(p, _st.rippleAreaPosition, _rippleColorOverride ? &(*_rippleColorOverride)->c : nullptr); auto down = isDown(); auto overIconOpacity = (down || forceRippled()) ? 1. : _a_over.value(isOver() ? 1. : 0.); @@ -554,7 +561,7 @@ void CrossButton::paintEvent(QPaintEvent *e) { auto shown = _showAnimation.value(_shown ? 1. : 0.); p.setOpacity(shown); - paintRipple(p, _st.crossPosition.x(), _st.crossPosition.y()); + paintRipple(p, _st.crossPosition); auto loading = 0.; if (_loadingAnimation.animating()) { diff --git a/ui/widgets/buttons.h b/ui/widgets/buttons.h index 3d21d55..64354fc 100644 --- a/ui/widgets/buttons.h +++ b/ui/widgets/buttons.h @@ -58,7 +58,15 @@ public: void clearState() override; - void paintRipple(QPainter &p, int x, int y, const QColor *colorOverride = nullptr); + void paintRipple( + QPainter &p, + const QPoint &point, + const QColor *colorOverride = nullptr); + void paintRipple( + QPainter &p, + int x, + int y, + const QColor *colorOverride = nullptr); void finishAnimating(); diff --git a/ui/widgets/call_button.cpp b/ui/widgets/call_button.cpp index 25bf401..638c67e 100644 --- a/ui/widgets/call_button.cpp +++ b/ui/widgets/call_button.cpp @@ -153,7 +153,7 @@ void CallButton::paintEvent(QPaintEvent *e) { } else { rippleColorInterpolated = anim::color(_stFrom->button.ripple.color, _stTo->button.ripple.color, _progress); } - paintRipple(p, _stFrom->button.rippleAreaPosition.x(), _stFrom->button.rippleAreaPosition.y(), rippleColorOverride); + paintRipple(p, _stFrom->button.rippleAreaPosition, rippleColorOverride); auto positionFrom = iconPosition(_stFrom); if (paintFrom) { diff --git a/ui/widgets/checkbox.cpp b/ui/widgets/checkbox.cpp index 7113f91..29014e9 100644 --- a/ui/widgets/checkbox.cpp +++ b/ui/widgets/checkbox.cpp @@ -570,11 +570,7 @@ void Checkbox::paintEvent(QPaintEvent *e) { p.setOpacity(_st.disabledOpacity); } else { auto color = anim::color(_st.rippleBg, _st.rippleBgActive, active); - paintRipple( - p, - check.x() + _st.rippleAreaPosition.x(), - check.y() + _st.rippleAreaPosition.y(), - &color); + paintRipple(p, check.topLeft() + _st.rippleAreaPosition, &color); } auto realCheckRect = myrtlrect(check);