git.lucas.co / cce-graph
node-based graph editor
git clone https://git.lucas.co/cce-graph.git

commitc3bb7e37c58a2bd1745531f67842b87caadd1105
parenta52d6f55b4
authorLucas Galante <[email protected]>
date2026-07-03 16:09
feat: make Graph and MenuBar rendering in cce-graph font-aware

 src/main.rs | 37 +++++++++++++++++--------------------
 1 file changed, 17 insertions(+), 20 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 77f3a95..7ab01b7 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -148,28 +148,25 @@ impl GraphApp {
 
     fn rebuild_text_items(&mut self) {
         self.text_items.clear();
+        let scale = cce_ui::scale::scale_factor();
         
-        // 1. Collect labels from Graph widget
-        let mut labels = self.graph.text_labels_with_bounds(&self.ui_context);
-        
-        // 2. Collect labels from MenuBar widget
-        labels.extend(self.menu_bar.text_labels_with_bounds(&self.ui_context));
+        // 1. Add Graph labels using our font-aware helper
+        Self::add_element_labels(
+            &self.graph,
+            &self.ui_context,
+            &mut self.font_system,
+            &mut self.text_items,
+            scale,
+        );
         
-        let scale = cce_ui::scale::scale_factor();
-        for (label, bounds) in labels {
-            let physical_size = label.font_size * scale;
-            let metrics = Metrics::new(physical_size, physical_size * 1.4);
-            let mut buf = Buffer::new(&mut self.font_system, metrics);
-            buf.set_text(&mut self.font_system, &label.text, Attrs::new(), glyphon::Shaping::Advanced);
-            buf.shape_until_scroll(&mut self.font_system, true);
-            self.text_items.push(TextItem {
-                buffer: buf,
-                x: label.x,
-                y: label.y,
-                color: glyphon::Color::rgb(label.color[0], label.color[1], label.color[2]),
-                bounds,
-            });
-        }
+        // 2. Add MenuBar labels using our font-aware helper
+        Self::add_element_labels(
+            &self.menu_bar,
+            &self.ui_context,
+            &mut self.font_system,
+            &mut self.text_items,
+            scale,
+        );
 
         // 3. Add Dropdown labels using our font-aware helper
         Self::add_element_labels(