Function zng::widget::node::with_context_blend
source · pub fn with_context_blend(
ctx: LocalContext,
over: bool,
child: impl UiNode,
) -> impl UiNode
Expand description
Helper for declaring widgets that are recontextualized to take in some of the context of an original parent.
See LocalContext::with_context_blend
for more details about over
. The returned
node will delegate all node operations to inside the blend. The UiNode::with_context
will delegate to the child
widget context, but the ctx
is not blended for this method, only
for UiNodeOp
methods.
§Warning
Properties, context vars and context locals are implemented with the assumption that all consumers have
released the context on return, that is even if the context was shared with worker threads all work was block-waited.
This node breaks this assumption, specially with over: true
you may cause unexpected behavior if you don’t consider
carefully what context is being captured and what context is being replaced.
As a general rule, only capture during init or update in NestGroup::CHILD
, only wrap full widgets and only place the wrapped
widget in a parent’s NestGroup::CHILD
for a parent that has no special expectations about the child.
As an example of things that can go wrong, if you capture during layout, the LAYOUT
context is captured
and replaces over
the actual layout context during all subsequent layouts in the actual parent.
§Panics
Panics during init if ctx
is not from the same app as the init context.