Don't update ui style elements list when updating to the same style

This commit is contained in:
Nikita Lisitsa 2022-03-11 00:48:10 +03:00
parent 4dcac2a5ac
commit 4922877431

View file

@ -57,13 +57,16 @@ namespace psemek::ui
std::shared_ptr<style const> element::set_style(std::shared_ptr<struct style const> st)
{
if (style_)
style_->use_as_style.erase(this);
if (style_ != st)
{
if (style_)
style_->use_as_style.erase(this);
std::swap(st, style_);
std::swap(st, style_);
if (style_)
style_->use_as_style.insert(this);
if (style_)
style_->use_as_style.insert(this);
}
auto visitor = util::recursive([](auto && self, element * e) -> void {
e->merged_style_ = nullptr;
@ -78,13 +81,16 @@ namespace psemek::ui
std::shared_ptr<struct style const> element::set_own_style(std::shared_ptr<struct style const> st)
{
if (style_)
style_->use_as_own_style.erase(this);
if (style_ != st)
{
if (style_)
style_->use_as_own_style.erase(this);
std::swap(st, own_style_);
std::swap(st, own_style_);
if (style_)
style_->use_as_own_style.insert(this);
if (style_)
style_->use_as_own_style.insert(this);
}
auto visitor = util::recursive([](auto && self, element * e) -> void {
e->merged_style_ = nullptr;