use zng_app::widget::node::Z_INDEX;
use crate::prelude::*;
#[property(CONTEXT, default(ZIndex::DEFAULT))]
pub fn z_index(child: impl UiNode, index: impl IntoVar<ZIndex>) -> impl UiNode {
let index = index.into_var();
let mut valid = false;
match_node(child, move |_, op| match op {
UiNodeOp::Init => {
valid = Z_INDEX.set(index.get());
if valid {
WIDGET.sub_var(&index);
} else {
tracing::error!(
"property `z_index` set for `{}` but it is not the direct child of a Z-sorting panel",
WIDGET.trace_id()
);
}
}
UiNodeOp::Update { .. } => {
if valid {
if let Some(i) = index.get_new() {
assert!(Z_INDEX.set(i));
}
}
}
_ => {}
})
}