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

commit675e6d867c3fb082c3b22c8ad5aec7650a9e329f
parent32e4dc0d27
authorLucas Galante <[email protected]>
date2026-08-24 14:38
render: the plate corner triggers are solid dots

The hollow ring with a hover-only fill becomes a solid circle in the plate
border color — one color, like the graph's port dots and geometry toggles —
growing slightly on hover and while its menu is open, instead of changing
tint. Pixel-verified filled center (149,149,169) against the (43,43,54)
plate.

 src/render.rs | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/src/render.rs b/src/render.rs
index 5950cc7..f81fc3a 100644
--- a/src/render.rs
+++ b/src/render.rs
@@ -716,32 +716,20 @@ impl State {
     /// strictly in order, so a popover background emitted in the geometry
     /// pass would sit under every label.
     /// The plates' corner menu triggers, drawn above pane content but below an
-    /// open context menu: a ring in the plate's own border color over a face
-    /// that stays transparent until hover, so the control reads as part of the
-    /// plate edge until it is reached for.
+    /// open context menu: a solid dot in the plate's border color — one color,
+    /// like the graph's port dots and geometry toggles — growing slightly on
+    /// hover (and while its menu is open) instead of changing tint.
     fn append_plate_corners(&self, pc: &mut PaintCtx) {
         let hovered = self.plate_corner_at(self.cursor_x, self.cursor_y);
         for idx in crate::plate_corner::PLATE_SLOTS {
             let Some((cx, cy)) = self.plate_corner_center(idx) else { continue };
-            let r = crate::plate_corner::CORNER_R;
-            let face = if hovered == Some(idx) || self.plate_menu_slot == Some(idx) {
-                let mut c = cce_ui::colors::param_plate_fill();
-                // The plate fill carries the blur-behind marker as a NEGATIVE
-                // alpha; a control this small must not open its own blur tap.
-                c[3] = c[3].abs().max(0.35);
-                c
-            } else {
-                [0.0; 4]
-            };
-            // A real circle, not a fully-rounded rect: the trough prim clamps
-            // its radii below half the side, so an `inset_plate` this small
-            // closes into a rounded SQUARE with a second square wall inside it.
-            if face[3] > 0.001 {
-                pc.circle(cx, cy, r, face);
+            let mut r = crate::plate_corner::CORNER_R;
+            if hovered == Some(idx) || self.plate_menu_slot == Some(idx) {
+                r *= 1.15;
             }
-            let ring = cce_ui::colors::plate_border_color()
+            let fill = cce_ui::colors::plate_border_color()
                 .unwrap_or([0.55, 0.58, 0.66, 0.85]);
-            pc.arc(cx, cy, r, cce_ui::colors::plate_border_thickness().max(1.0), 0.0, TAU, ring);
+            pc.circle(cx, cy, r, fill);
         }
     }