Don't update ui style elements list when updating to the same style
This commit is contained in:
parent
4dcac2a5ac
commit
4922877431
1 changed files with 16 additions and 10 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue