From 62002f034bbfd3e5f78a71317f37c685a8846b1f Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 27 Mar 2022 16:25:30 +0300 Subject: [PATCH] Added ability to ignore clicks for toggle in Ui::SettingsButton. --- ui/widgets/buttons.cpp | 12 ++++++++---- ui/widgets/buttons.h | 4 +++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ui/widgets/buttons.cpp b/ui/widgets/buttons.cpp index 6a98811..f253d14 100644 --- a/ui/widgets/buttons.cpp +++ b/ui/widgets/buttons.cpp @@ -701,16 +701,20 @@ SettingsButton::SettingsButton( SettingsButton::~SettingsButton() = default; -SettingsButton *SettingsButton::toggleOn(rpl::producer &&toggled) { +SettingsButton *SettingsButton::toggleOn( + rpl::producer &&toggled, + bool ignoreClick) { Expects(_toggle == nullptr); _toggle = std::make_unique( isOver() ? _st.toggleOver : _st.toggle, false, [this] { rtlupdate(toggleRect()); }); - addClickHandler([this] { - _toggle->setChecked(!_toggle->checked(), anim::type::normal); - }); + if (!ignoreClick) { + addClickHandler([this] { + _toggle->setChecked(!_toggle->checked(), anim::type::normal); + }); + } std::move( toggled ) | rpl::start_with_next([this](bool toggled) { diff --git a/ui/widgets/buttons.h b/ui/widgets/buttons.h index da408f6..58d4709 100644 --- a/ui/widgets/buttons.h +++ b/ui/widgets/buttons.h @@ -261,7 +261,9 @@ public: const style::SettingsButton &st); ~SettingsButton(); - SettingsButton *toggleOn(rpl::producer &&toggled); + SettingsButton *toggleOn( + rpl::producer &&toggled, + bool ignoreClick = false); bool toggled() const; rpl::producer toggledChanges() const; rpl::producer toggledValue() const;