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;