notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

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:
Mcrates/notedeck_notebook/src/lib.rs | 33+++++++++++++++++----------------
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 }) }