notebook: fix node sizes

make sure we always allocate the correct amount of space,
even if we use less.

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2025-07-19 11:27:50 -07:00
parent 17f72f6127
commit 3766308ce6

View File

@@ -183,36 +183,33 @@ fn node_ui(ui: &mut egui::Ui, node: &Node) -> egui::Response {
fn text_node_ui(ui: &mut egui::Ui, node: &TextNode) -> egui::Response { fn text_node_ui(ui: &mut egui::Ui, node: &TextNode) -> egui::Response {
node_box_ui(ui, node.node(), |ui| { node_box_ui(ui, node.node(), |ui| {
egui::ScrollArea::vertical().show(ui, |ui| { egui::ScrollArea::vertical()
ui.with_layout(egui::Layout::left_to_right(Align::Min), |ui| { .show(ui, |ui| {
ui.add(Label::new(node.text()).wrap_mode(TextWrapMode::Wrap)) ui.with_layout(egui::Layout::left_to_right(Align::Min), |ui| {
}); ui.add(Label::new(node.text()).wrap_mode(TextWrapMode::Wrap))
}); })
})
.inner
.response
}) })
} }
fn file_node_ui(ui: &mut egui::Ui, node: &FileNode) -> egui::Response { fn file_node_ui(ui: &mut egui::Ui, node: &FileNode) -> egui::Response {
node_box_ui(ui, node.node(), |ui| { node_box_ui(ui, node.node(), |ui| ui.label("file node"))
ui.label("file node");
})
} }
fn link_node_ui(ui: &mut egui::Ui, node: &LinkNode) -> egui::Response { fn link_node_ui(ui: &mut egui::Ui, node: &LinkNode) -> egui::Response {
node_box_ui(ui, node.node(), |ui| { node_box_ui(ui, node.node(), |ui| ui.label("link node"))
ui.label("link node");
})
} }
fn group_node_ui(ui: &mut egui::Ui, node: &GroupNode) -> egui::Response { fn group_node_ui(ui: &mut egui::Ui, node: &GroupNode) -> egui::Response {
node_box_ui(ui, node.node(), |ui| { node_box_ui(ui, node.node(), |ui| ui.label("group node"))
ui.label("group node");
})
} }
fn node_box_ui( fn node_box_ui(
ui: &mut egui::Ui, ui: &mut egui::Ui,
node: &GenericNode, node: &GenericNode,
contents: impl FnOnce(&mut egui::Ui), contents: impl FnOnce(&mut egui::Ui) -> egui::Response,
) -> egui::Response { ) -> egui::Response {
let pos = node_rect(node); let pos = node_rect(node);
@@ -225,7 +222,11 @@ fn node_box_ui(
2.0, 2.0,
ui.visuals().noninteractive().bg_stroke.color, ui.visuals().noninteractive().bg_stroke.color,
)) ))
.show(ui, contents) .show(ui, |ui| {
let rect = ui.available_rect_before_wrap();
ui.allocate_at_least(ui.available_size(), egui::Sense::click());
ui.put(rect, |ui: &mut egui::Ui| contents(ui));
})
.response .response
}) })
} }