graphic design tool
git clone https://git.lucas.co/cce-designer.git
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