style: add display="none"

This commit is contained in:
Aleksander
2025-11-13 20:54:19 +01:00
parent 4d4292255a
commit 830be58c7a
4 changed files with 14 additions and 8 deletions

View File

@@ -318,12 +318,16 @@ fn draw_children(params: &DrawParams, state: &mut DrawState, parent_node_id: taf
let layout = &params.layout; let layout = &params.layout;
for node_id in layout.state.tree.child_ids(parent_node_id) { for node_id in layout.state.tree.child_ids(parent_node_id) {
let Some(widget_id) = layout.state.tree.get_node_context(node_id).copied() else { let Ok(style) = layout.state.tree.style(node_id) else {
debug_assert!(false); debug_assert!(false);
continue; continue;
}; };
let Ok(style) = layout.state.tree.style(node_id) else { if style.display == taffy::Display::None {
continue;
}
let Some(widget_id) = layout.state.tree.get_node_context(node_id).copied() else {
debug_assert!(false); debug_assert!(false);
continue; continue;
}; };

View File

@@ -405,6 +405,10 @@ impl Layout {
let style = self.state.tree.style(node_id)?; let style = self.state.tree.style(node_id)?;
if style.display == taffy::Display::None {
return Ok(());
}
let Some(widget) = self.state.widgets.get(widget_id) else { let Some(widget) = self.state.widgets.get(widget_id) else {
debug_assert!(false); debug_assert!(false);
anyhow::bail!("invalid widget"); anyhow::bail!("invalid widget");

View File

@@ -117,6 +117,7 @@ pub fn parse_style(attribs: &[AttribPair]) -> taffy::Style {
"flex" => style.display = Display::Flex, "flex" => style.display = Display::Flex,
"block" => style.display = Display::Block, "block" => style.display = Display::Block,
"grid" => style.display = Display::Grid, "grid" => style.display = Display::Grid,
"none" => style.display = Display::None,
_ => { _ => {
print_invalid_attrib(key, value); print_invalid_attrib(key, value);
} }

View File

@@ -5,18 +5,15 @@ use slotmap::{HopSlotMap, Key, SecondaryMap};
use crate::{ use crate::{
overlays::{ overlays::{
anchor::create_anchor, anchor::create_anchor, edit::EditWrapperManager, keyboard::builder::create_keyboard,
edit::EditWrapperManager, screen::create_screens, watch::create_watch,
keyboard::builder::create_keyboard,
screen::create_screens,
watch::{create_watch, WATCH_NAME},
}, },
state::AppState, state::AppState,
windowing::{ windowing::{
OverlayID, OverlaySelector,
set::{OverlayWindowSet, SerializedWindowSet}, set::{OverlayWindowSet, SerializedWindowSet},
snap_upright, snap_upright,
window::OverlayWindowData, window::OverlayWindowData,
OverlayID, OverlaySelector,
}, },
}; };