Make sure subscribed-to 'children' reactive values stay alive in ui::component_factory_base
This commit is contained in:
parent
9f063218bf
commit
3ac46bc8dc
1 changed files with 3 additions and 3 deletions
|
|
@ -85,7 +85,7 @@ namespace psemek::ui::impl
|
|||
impl->release_child_token();
|
||||
if (typed_value.child)
|
||||
{
|
||||
impl->set_child_token(typed_value.child.subscribe([this, impl = impl.get(), &state, &delayed_executor, request_reshape](std::any const & child){
|
||||
impl->set_child_token(typed_value.child.subscribe([this, impl = impl.get(), &state, &delayed_executor, request_reshape, holder = typed_value.child](std::any const & child){
|
||||
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, child]{
|
||||
impl->set_child(reconciliate(impl->release_child(), child, state, delayed_executor, request_reshape));
|
||||
request_reshape();
|
||||
|
|
@ -101,7 +101,7 @@ namespace psemek::ui::impl
|
|||
{
|
||||
if (typed_value.children)
|
||||
{
|
||||
impl->set_children_token(typed_value.children.subscribe([this, impl = impl.get(), &state, &delayed_executor, request_reshape](std::vector<typename Type::element> const & children_values){
|
||||
impl->set_children_token(typed_value.children.subscribe([this, impl = impl.get(), &state, &delayed_executor, request_reshape, holder = typed_value.children](std::vector<typename Type::element> const & children_values){
|
||||
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, children_values]{
|
||||
impl->release_child_tokens();
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ namespace psemek::ui::impl
|
|||
{
|
||||
if (children_values[i].element)
|
||||
{
|
||||
child_tokens[i] = children_values[i].element.subscribe([this, impl, &state, &delayed_executor, request_reshape, i](std::any const & value){
|
||||
child_tokens[i] = children_values[i].element.subscribe([this, impl, &state, &delayed_executor, request_reshape, i, holder = children_values[i].element](std::any const & value){
|
||||
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, i, value]{
|
||||
auto children = impl->release_children();
|
||||
children[i] = reconciliate(std::move(children[i]), value, state, delayed_executor, request_reshape);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue