Fixed blob animations in mute button with enabled push-to-talk.

This commit is contained in:
23rd 2020-12-06 18:00:07 +03:00
parent fe6daf12b8
commit ea840471d2

View file

@ -168,11 +168,12 @@ BlobsWidget::BlobsWidget(
const auto radiuses = _blobs.radiusesAt(i); const auto radiuses = _blobs.radiusesAt(i);
auto radiusesChange = rpl::duplicate( auto radiusesChange = rpl::duplicate(
hideBlobs hideBlobs
) | rpl::distinct_until_changed(
) | rpl::map([=](bool hide) -> Radiuses { ) | rpl::map([=](bool hide) -> Radiuses {
return hide return hide
? Radiuses{ radiuses.min, radiuses.min } ? Radiuses{ radiuses.min, radiuses.min }
: radiuses; : radiuses;
}) | rpl::distinct_until_changed(); });
_blobs.setRadiusesAt(std::move(radiusesChange), i); _blobs.setRadiusesAt(std::move(radiusesChange), i);
} }
@ -280,15 +281,14 @@ CallMuteButton::CallMuteButton(
, _blobs(base::make_unique_q<BlobsWidget>( , _blobs(base::make_unique_q<BlobsWidget>(
parent, parent,
rpl::combine( rpl::combine(
anim::Disables(), rpl::single(anim::Disabled()) | rpl::then(anim::Disables()),
rpl::merge( std::move(hideBlobs),
std::move(hideBlobs), _state.value(
_state.value( ) | rpl::map([](const CallMuteButtonState &state) {
) | rpl::map([](const CallMuteButtonState &state) { return IsConnecting(state.type);
return IsConnecting(state.type); })
})) ) | rpl::map([](bool animDisabled, bool hide, bool isConnecting) {
) | rpl::map([](bool animDisabled, bool hide) { return isConnecting || !(!animDisabled && !hide);
return !(!animDisabled && !hide);
}))) })))
, _content(parent, st::callMuteButtonActive, &st::callMuteButtonMuted) , _content(parent, st::callMuteButtonActive, &st::callMuteButtonMuted)
, _radial(nullptr) , _radial(nullptr)