From 79146e54b9e173c86bd5efc6e3e118c548c52884 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 13 Jan 2021 19:41:39 +0300 Subject: [PATCH] Returned finish of animating to menu. --- ui/widgets/buttons.cpp | 4 ++++ ui/widgets/buttons.h | 2 ++ ui/widgets/menu/menu.cpp | 3 +++ ui/widgets/menu/menu_item_base.cpp | 4 ++++ ui/widgets/menu/menu_item_base.h | 2 ++ ui/widgets/menu/menu_toggle.cpp | 7 +++++++ ui/widgets/menu/menu_toggle.h | 2 ++ 7 files changed, 24 insertions(+) diff --git a/ui/widgets/buttons.cpp b/ui/widgets/buttons.cpp index eec2bae..10df939 100644 --- a/ui/widgets/buttons.cpp +++ b/ui/widgets/buttons.cpp @@ -79,6 +79,10 @@ RippleButton::RippleButton(QWidget *parent, const style::RippleAnimation &st) void RippleButton::clearState() { AbstractButton::clearState(); + finishAnimating(); +} + +void RippleButton::finishAnimating() { if (_ripple) { _ripple.reset(); update(); diff --git a/ui/widgets/buttons.h b/ui/widgets/buttons.h index d654d2f..3d21d55 100644 --- a/ui/widgets/buttons.h +++ b/ui/widgets/buttons.h @@ -60,6 +60,8 @@ public: void paintRipple(QPainter &p, int x, int y, const QColor *colorOverride = nullptr); + void finishAnimating(); + ~RippleButton(); protected: diff --git a/ui/widgets/menu/menu.cpp b/ui/widgets/menu/menu.cpp index 95eb817..e384360 100644 --- a/ui/widgets/menu/menu.cpp +++ b/ui/widgets/menu/menu.cpp @@ -168,6 +168,9 @@ void Menu::clearActions() { } void Menu::finishAnimating() { + for (const auto &widget : _actionWidgets) { + widget->finishAnimating(); + } } bool Menu::empty() const { diff --git a/ui/widgets/menu/menu_item_base.cpp b/ui/widgets/menu/menu_item_base.cpp index a798898..222806c 100644 --- a/ui/widgets/menu/menu_item_base.cpp +++ b/ui/widgets/menu/menu_item_base.cpp @@ -111,4 +111,8 @@ void ItemBase::setContentWidth(int w) { _contentWidth = w; } +void ItemBase::finishAnimating() { + RippleButton::finishAnimating(); +} + } // namespace Ui::Menu diff --git a/ui/widgets/menu/menu_item_base.h b/ui/widgets/menu/menu_item_base.h index 9844bf6..53d7fb8 100644 --- a/ui/widgets/menu/menu_item_base.h +++ b/ui/widgets/menu/menu_item_base.h @@ -42,6 +42,8 @@ public: virtual QAction *action() const = 0; virtual bool isEnabled() const = 0; + virtual void finishAnimating(); + protected: void init(); void initResizeHook(rpl::producer &&size); diff --git a/ui/widgets/menu/menu_toggle.cpp b/ui/widgets/menu/menu_toggle.cpp index c96eb3f..eedc7bc 100644 --- a/ui/widgets/menu/menu_toggle.cpp +++ b/ui/widgets/menu/menu_toggle.cpp @@ -67,4 +67,11 @@ void Toggle::paintEvent(QPaintEvent *e) { } } +void Toggle::finishAnimating() { + ItemBase::finishAnimating(); + if (_toggle) { + _toggle->finishAnimating(); + } +} + } // namespace Ui::Menu diff --git a/ui/widgets/menu/menu_toggle.h b/ui/widgets/menu/menu_toggle.h index 8b46d66..7806858 100644 --- a/ui/widgets/menu/menu_toggle.h +++ b/ui/widgets/menu/menu_toggle.h @@ -25,6 +25,8 @@ public: const style::icon *icon, const style::icon *iconOver); + void finishAnimating() override; + protected: void paintEvent(QPaintEvent *e) override;