Don't post ui reshape if one if already posted

This commit is contained in:
Nikita Lisitsa 2022-02-19 16:36:17 +03:00
parent 4281093b9d
commit 2004f8043a
2 changed files with 8 additions and 0 deletions

View file

@ -81,6 +81,7 @@ namespace psemek::ui
std::shared_ptr<struct style const> own_style_;
mutable std::shared_ptr<struct style const> merged_style_;
mutable std::shared_ptr<struct style const> merged_own_style_;
bool reshape_posted_ = false;
mutable std::vector<util::function<void()>> delayed_callbacks_;

View file

@ -130,10 +130,17 @@ namespace psemek::ui
void element::post_reshape()
{
if (root()->reshape_posted_)
return;
root()->reshape_posted_ = true;
auto weak_self = weak_from_this();
post([weak_self]{
if (auto self = weak_self.lock())
{
self->root()->reshape();
self->root()->reshape_posted_ = false;
}
});
}