git.lucas.co / cce-designer
graphic design tool
git clone https://git.lucas.co/cce-designer.git

commit25aa9ff456c3e29add80500de9629378577d5553
parent874b0d01a1
authorLucas Galante <[email protected]>
date2026-08-26 12:25
fix: the breadcrumb paints through its widget (the cce-ui restyle shows)

The designer's hand-maintained paint walk drew the breadcrumb from its
legacy views — which Breadcrumb doesn't serve (transparent color(), no
extra_quads), so the slot rendered as bare labels and none of the cce-ui
breadcrumb restyle (per-segment plates on the dropdown's relief, slanted
seams) ever appeared here, while cce-files picked it up from the engine
walk for free. BREADCRUMB_IDX now joins PLAYBAR_IDX on the modern path:
paint_self emits the widget's geometry; it is not a subtree painter, so
its Text prims drop and append_frame_text keeps owning the labels.

Co-Authored-By: Claude Fable 5 <[email protected]>

 src/render.rs | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/render.rs b/src/render.rs
index db6b02a..cc9823c 100644
--- a/src/render.rs
+++ b/src/render.rs
@@ -266,6 +266,15 @@ impl State {
             let (wx, wy, ww2, wh2) = w.rect();
             append_widget_plate_radii(w, pc, None, self.pane_plate_radii(wx, wy, ww2, wh2));
             w.paint_self(&self.ui_context, pc);
+        } else if idx == BREADCRUMB_IDX {
+            // Modern-paint control: Breadcrumb's whole look lives in its
+            // Paint::paint() (the cce-ui restyle — per-segment plates on the
+            // dropdown's relief, slanted seams) and it serves NO legacy views,
+            // so the fall-through branch rendered bare labels on the network
+            // plate. Unlike the playbar it is not a subtree painter: paint_self
+            // drops the widget's Text prims, and the labels keep coming from
+            // append_frame_text like every other slot — no doubling.
+            w.paint_self(&self.ui_context, pc);
         } else if idx == VIEWPORT_IDX {
             // The scene viewer's lip is the window's own backplate edge: the
             // 3D canvas is full-bleed (CANVAS_IDX covers the window; the other