commit 3766308ce6267679eacbd050e2d83ef6dc3f5eac
parent 17f72f6127b3e75c463352c9063a473d0d6591b1
Author: William Casarin <jb55@jb55.com>
Date: Sat, 19 Jul 2025 11:27:50 -0700
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>
Diffstat:
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/crates/notedeck_notebook/src/lib.rs b/crates/notedeck_notebook/src/lib.rs
@@ -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 {
node_box_ui(ui, node.node(), |ui| {
- egui::ScrollArea::vertical().show(ui, |ui| {
- ui.with_layout(egui::Layout::left_to_right(Align::Min), |ui| {
- ui.add(Label::new(node.text()).wrap_mode(TextWrapMode::Wrap))
- });
- });
+ egui::ScrollArea::vertical()
+ .show(ui, |ui| {
+ 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 {
- node_box_ui(ui, node.node(), |ui| {
- ui.label("file node");
- })
+ node_box_ui(ui, node.node(), |ui| ui.label("file node"))
}
fn link_node_ui(ui: &mut egui::Ui, node: &LinkNode) -> egui::Response {
- node_box_ui(ui, node.node(), |ui| {
- ui.label("link node");
- })
+ node_box_ui(ui, node.node(), |ui| ui.label("link node"))
}
fn group_node_ui(ui: &mut egui::Ui, node: &GroupNode) -> egui::Response {
- node_box_ui(ui, node.node(), |ui| {
- ui.label("group node");
- })
+ node_box_ui(ui, node.node(), |ui| ui.label("group node"))
}
fn node_box_ui(
ui: &mut egui::Ui,
node: &GenericNode,
- contents: impl FnOnce(&mut egui::Ui),
+ contents: impl FnOnce(&mut egui::Ui) -> egui::Response,
) -> egui::Response {
let pos = node_rect(node);
@@ -225,7 +222,11 @@ fn node_box_ui(
2.0,
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
})
}