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();
|
impl->release_child_token();
|
||||||
if (typed_value.child)
|
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]{
|
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, child]{
|
||||||
impl->set_child(reconciliate(impl->release_child(), child, state, delayed_executor, request_reshape));
|
impl->set_child(reconciliate(impl->release_child(), child, state, delayed_executor, request_reshape));
|
||||||
request_reshape();
|
request_reshape();
|
||||||
|
|
@ -101,7 +101,7 @@ namespace psemek::ui::impl
|
||||||
{
|
{
|
||||||
if (typed_value.children)
|
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]{
|
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, children_values]{
|
||||||
impl->release_child_tokens();
|
impl->release_child_tokens();
|
||||||
|
|
||||||
|
|
@ -142,7 +142,7 @@ namespace psemek::ui::impl
|
||||||
{
|
{
|
||||||
if (children_values[i].element)
|
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]{
|
delayed_executor.post([this, impl, &state, &delayed_executor, request_reshape, i, value]{
|
||||||
auto children = impl->release_children();
|
auto children = impl->release_children();
|
||||||
children[i] = reconciliate(std::move(children[i]), value, state, delayed_executor, request_reshape);
|
children[i] = reconciliate(std::move(children[i]), value, state, delayed_executor, request_reshape);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue