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)
|
std::shared_ptr<style const> element::set_style(std::shared_ptr<struct style const> st)
|
||||||
{
|
{
|
||||||
if (style_)
|
if (style_ != st)
|
||||||
style_->use_as_style.erase(this);
|
{
|
||||||
|
if (style_)
|
||||||
|
style_->use_as_style.erase(this);
|
||||||
|
|
||||||
std::swap(st, style_);
|
std::swap(st, style_);
|
||||||
|
|
||||||
if (style_)
|
if (style_)
|
||||||
style_->use_as_style.insert(this);
|
style_->use_as_style.insert(this);
|
||||||
|
}
|
||||||
|
|
||||||
auto visitor = util::recursive([](auto && self, element * e) -> void {
|
auto visitor = util::recursive([](auto && self, element * e) -> void {
|
||||||
e->merged_style_ = nullptr;
|
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)
|
std::shared_ptr<struct style const> element::set_own_style(std::shared_ptr<struct style const> st)
|
||||||
{
|
{
|
||||||
if (style_)
|
if (style_ != st)
|
||||||
style_->use_as_own_style.erase(this);
|
{
|
||||||
|
if (style_)
|
||||||
|
style_->use_as_own_style.erase(this);
|
||||||
|
|
||||||
std::swap(st, own_style_);
|
std::swap(st, own_style_);
|
||||||
|
|
||||||
if (style_)
|
if (style_)
|
||||||
style_->use_as_own_style.insert(this);
|
style_->use_as_own_style.insert(this);
|
||||||
|
}
|
||||||
|
|
||||||
auto visitor = util::recursive([](auto && self, element * e) -> void {
|
auto visitor = util::recursive([](auto && self, element * e) -> void {
|
||||||
e->merged_style_ = nullptr;
|
e->merged_style_ = nullptr;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue