GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
Rename the internal backplate vocabulary to root plate (cce-ui RFC 7a-4)
Mechanical rename, no behaviour change: identifiers that carried the
retired word (statics, registry slots, setters, trait methods, locals)
now say root_plate, and comment prose says root plate.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
docs/rfc-core-rebuild.md | 12 ++++--
src/backend/window_runner.rs | 18 ++++----
src/bin/cce-ramp.rs | 2 +-
src/bin/cce-relief.rs | 4 +-
src/color.rs | 86 +++++++++++++++++++--------------------
src/config.rs | 2 +-
src/context.rs | 6 +--
src/layout.rs | 32 +++++++--------
src/main.rs | 6 +--
src/scene/arena.rs | 2 +-
src/scene/paint.rs | 6 +--
src/widget/container/menu.rs | 12 +++---
src/widget/container/paginator.rs | 6 +--
src/widget/container/treelist.rs | 6 +--
src/widget/display/graph.rs | 2 +-
src/widget/display/label.rs | 4 +-
src/widget/display/separator.rs | 4 +-
src/widget/display/status_bar.rs | 14 +++----
src/widget/display/status_dot.rs | 4 +-
src/widget/input/dropdown.rs | 10 ++---
src/widget/mod.rs | 4 +-
src/widget/model.rs | 12 +++---
22 files changed, 130 insertions(+), 124 deletions(-)
diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index b5c37e0..945822b 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -2451,9 +2451,15 @@ Constraint respected: **each crate still builds standalone** — the new core is
aliases came out: the `backplate.*` pointer/registry read-aliases in cce-ui, the
compositor's `backplate` node fallback, cce-grid's and cce-notifier's fallbacks, the
`#[deprecated] backplate_*` getters, and `backplate` in `PROP_NODES`. A `backplate`
- block in a config is now silently ignored. Registry slot names, `BACKPLATE_*` statics,
- the compositor's serde fields and `set_backplate_*` setters keep the historical
- name — internal vocabulary, not aliases.
+ block in a config is now silently ignored.
+ - **7a-4 — DONE (2026-09-06).** The internal vocabulary followed: registry slots
+ (`root_plate_*`), the `ROOT_PLATE_*` statics, `set_root_plate_*` setters,
+ `read_root_plate_opacity_if_configured`, the trait methods
+ `Application::is_movable_root_plate_at` and `Widget::blocks_root_plate_drag`, the
+ compositor's `root_plate_{color,blur,corner_radius}` config fields (and the flat-form
+ keys of the same name), cce-gallery's `RootPlate` exhibit and `--root-plate` flags,
+ and the comment prose across every crate. "backplate" survives only in this RFC's
+ history and in test fixtures that prove the legacy spelling is ignored.
- **7b — `PlateSpec` + window-corner math toolkit-side.** Introduce the spec, port
`pane_plate_radii` in, and give the engine a root-plate paint path fed by a spec instead of
each app's hand-rolled quads (DemoApp first, then the clients). The designer's per-pane
diff --git a/src/backend/window_runner.rs b/src/backend/window_runner.rs
index 2c233da..3d4055e 100644
--- a/src/backend/window_runner.rs
+++ b/src/backend/window_runner.rs
@@ -1695,7 +1695,7 @@ pub struct DlImage {
/// whether another carve already claimed the host's feature run), so the SAME
/// widget can render either way depending on what is around it — and it does so
/// silently. That has already shipped as a bug once: a hovered button's opaque
-/// fill used to sever every later button from the backplate they carve into,
+/// fill used to sever every later button from the root plate they carve into,
/// which is why `plate_stack` is a stack (see its comment below).
///
/// Off by default and read once; the classification below runs only when set.
@@ -1802,9 +1802,9 @@ pub fn tessellate_display_list(
// and Image prims (which draw through separate paths anyway) intervene.
let mut features: Vec<[f32; 12]> = Vec::new();
// Open carve-host plates, in emission order (innermost candidates last).
- // A STACK, not a single slot: a sibling plate emitted between a backplate
+ // A STACK, not a single slot: a sibling plate emitted between a root plate
// and its later carves (a hovered button's opaque fill among transparent
- // ones) must not sever those carves from the backplate they are carved
+ // ones) must not sever those carves from the root plate they are carved
// into — that severing rendered every button after the hovered one
// through the visually-different overlay fallback. Ordinary geometry
// still closes every open plate (the draw-order rule below).
@@ -3223,9 +3223,9 @@ pub trait Application: Sized + 'static {
}
/// Whether a left-press at (px, py) should start a compositor window drag. Every root
- /// `Backplate` is dissolved (Phase 6), so the default is "no" — apps that want
+ /// root plate container is dissolved (Phase 6), so the default is "no" — apps that want
/// drag-anywhere override this with `ctx.drag_allowed_at(px, py)`.
- fn is_movable_backplate_at(&self, _px: f32, _py: f32) -> bool {
+ fn is_movable_root_plate_at(&self, _px: f32, _py: f32) -> bool {
false
}
@@ -3358,7 +3358,7 @@ pub trait Application: Sized + 'static {
fn handle_resize(&mut self, _width: f32, _height: f32, _scale: f64) {}
/// Whether the runner's built-in client-side decorations apply: the
- /// titlebar move band, the movable-backplate drag regions, and — when
+ /// titlebar move band, the movable-root plate drag regions, and — when
/// [`csd_resize_borders`](Application::csd_resize_borders) is also on —
/// the rect-edge resize grabs and their edge cursors. Return `false` for a
/// window whose chrome doesn't follow its rect (e.g. a circular pane) and
@@ -3386,7 +3386,7 @@ pub trait Application: Sized + 'static {
/// Whether the standard CSD reserves an implicit title-bar strip (`y` in `[8, 32)`) as a
/// drag-to-move handle. Opt-in: off by default, so a window has no title bar and is moved
/// through the compositor (or via explicitly-declared handles —
- /// [`is_movable_backplate_at`](Application::is_movable_backplate_at)); nothing is
+ /// [`is_movable_root_plate_at`](Application::is_movable_root_plate_at)); nothing is
/// implicitly draggable. An app with an actual title bar returns `true`. Separate from
/// [`standard_csd`](Application::standard_csd), which also gates the resize borders, and
/// only consulted when `standard_csd()` is on.
@@ -4430,7 +4430,7 @@ impl<A: Application> PointerHandler for EngineState<A> {
// Enter carries the pointer's position but no Motion follows until it
// actually moves — without this the app's hover state is stale from
// enter to first move, and a press in that window can misroute (e.g. a
- // divider press falling through to the movable-backplate window drag).
+ // divider press falling through to the movable-root plate window drag).
let mut rebuild = false;
self.inner.as_mut().unwrap().handle_pointer_move(LogicalPosition::new(lx, ly), &mut rebuild);
if rebuild {
@@ -4570,7 +4570,7 @@ impl<A: Application> PointerHandler for EngineState<A> {
&& ly >= border && ly < 32.0 && lx < self.logical_width - 70.0
{
should_move = true;
- } else if self.inner.as_ref().unwrap().is_movable_backplate_at(lx, ly) {
+ } else if self.inner.as_ref().unwrap().is_movable_root_plate_at(lx, ly) {
should_move = true;
}
diff --git a/src/bin/cce-ramp.rs b/src/bin/cce-ramp.rs
index f240536..26bf998 100644
--- a/src/bin/cce-ramp.rs
+++ b/src/bin/cce-ramp.rs
@@ -329,7 +329,7 @@ impl Application for RampPopup {
Some(&self.ui_context)
}
- fn is_movable_backplate_at(&self, px: f32, py: f32) -> bool {
+ fn is_movable_root_plate_at(&self, px: f32, py: f32) -> bool {
self.ui_context.drag_allowed_at(px, py)
}
diff --git a/src/bin/cce-relief.rs b/src/bin/cce-relief.rs
index d206a60..384781a 100644
--- a/src/bin/cce-relief.rs
+++ b/src/bin/cce-relief.rs
@@ -453,7 +453,7 @@ struct BevelPopup {
/// The window plate's alpha — seeded from this app's own config
/// (`~/.config/cce/cce-relief/config.kdl`, `window { opacity }`, falling
/// back to the pre-rename `cce-bevel` path), falling
- /// back to the DE backplate opacity. Edited on the file directly, the
+ /// back to the DE root plate opacity. Edited on the file directly, the
/// DE way — no dedicated control.
plate_opacity: f32,
/// Status line under the buttons: what the last save/reset did.
@@ -1518,7 +1518,7 @@ impl Application for BevelPopup {
Some(&mut self.ui_context)
}
- fn is_movable_backplate_at(&self, px: f32, py: f32) -> bool {
+ fn is_movable_root_plate_at(&self, px: f32, py: f32) -> bool {
self.ui_context.drag_allowed_at(px, py)
}
diff --git a/src/color.rs b/src/color.rs
index 1703e14..6abe522 100644
--- a/src/color.rs
+++ b/src/color.rs
@@ -39,7 +39,7 @@ static CONTROL_LABEL_COLOR_DETACHED: RwLock<[f32; 4]> = RwLock::new([0.22416, 0.
static CONTROL_LABEL_HOVER_COLOR: RwLock<Option<[f32; 4]>> = RwLock::new(None);
static CONTROL_LABEL_FOCUS_COLOR: RwLock<Option<[f32; 4]>> = RwLock::new(None);
static OPACITY: RwLock<Option<f32>> = RwLock::new(None);
-static BACKPLATE_OPACITY: RwLock<Option<f32>> = RwLock::new(None);
+static ROOT_PLATE_OPACITY: RwLock<Option<f32>> = RwLock::new(None);
static LIST_BG_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 0.3]);
static LIST_ENTRY_BG_COLOR: RwLock<[f32; 4]> = RwLock::new([1.0, 1.0, 1.0, 0.04]);
static LIST_ENTRY_HIGHLIGHT_COLOR: RwLock<[f32; 4]> = RwLock::new([1.0, 1.0, 1.0, 0.8]);
@@ -48,7 +48,7 @@ static BREADCRUMB_BG_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.
static POPOVER_BG_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
static PAGE_COLOR: RwLock<[f32; 4]> = RwLock::new([0.0, 0.0, 0.0, 0.0]);
static LAYER_COLOR: RwLock<[f32; 4]> = RwLock::new([0.0, 0.0, 0.0, 0.0]);
-static BACKPLATE_CORNER_RADIUS: RwLock<f32> = RwLock::new(12.0);
+static ROOT_PLATE_CORNER_RADIUS: RwLock<f32> = RwLock::new(12.0);
// Transparent by default (alpha 0): a dropdown picks up the surface it sits
// on, and its closed-state chrome is the flush inset trough alone — the
@@ -60,16 +60,16 @@ static TEXTBOX_PLACEHOLDER_TEXT_COLOR: RwLock<[u8; 3]> = RwLock::new([0x60, 0x60
static TEXTBOX_BACKGROUND_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
static TEXTBOX_BACKGROUND_EDIT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.06, 0.10, 0.18, 1.0]);
-static BACKPLATE_MENUBAR_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
-static BACKPLATE_MENUBAR_TEXT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.90196, 0.90196, 0.94902, 1.0]);
-static BACKPLATE_MENUBAR_BLUR: RwLock<bool> = RwLock::new(false);
+static ROOT_PLATE_MENUBAR_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
+static ROOT_PLATE_MENUBAR_TEXT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.90196, 0.90196, 0.94902, 1.0]);
+static ROOT_PLATE_MENUBAR_BLUR: RwLock<bool> = RwLock::new(false);
/// Tint strength of frosted menus/popovers over the blurred backdrop:
/// 1.0 is fully opaque (frost invisible), lower shows more content through.
static MENU_OPACITY: RwLock<f32> = RwLock::new(0.8);
-static BACKPLATE_STATUSBAR_COLOR: RwLock<[f32; 4]> = RwLock::new([0.06, 0.06, 0.10, 1.0]);
-static BACKPLATE_STATUSBAR_TEXT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.6666, 0.6666, 0.7333, 1.0]);
-static BACKPLATE_STATUSBAR_BLUR: RwLock<bool> = RwLock::new(false);
+static ROOT_PLATE_STATUSBAR_COLOR: RwLock<[f32; 4]> = RwLock::new([0.06, 0.06, 0.10, 1.0]);
+static ROOT_PLATE_STATUSBAR_TEXT_COLOR: RwLock<[f32; 4]> = RwLock::new([0.6666, 0.6666, 0.7333, 1.0]);
+static ROOT_PLATE_STATUSBAR_BLUR: RwLock<bool> = RwLock::new(false);
static BUTTON_BACKGROUND_COLOR: RwLock<[f32; 4]> = RwLock::new(BUTTON_IDLE);
static RAMP_BACKGROUND_COLOR: RwLock<[f32; 4]> = RwLock::new([0.08, 0.08, 0.12, 1.0]);
static RAMP_BORDER_COLOR: RwLock<[f32; 4]> = RwLock::new([0.18, 0.18, 0.24, 1.0]);
@@ -286,26 +286,26 @@ fn parse_and_set_colors(content: &str) {
}
// `/style/surface/plate/root/...` is the one spelling of the root-plate
- // style (RFC Phase 7a; the legacy `backplate` read-alias was removed
+ // style (RFC Phase 7a; the legacy `root plate` read-alias was removed
// 2026-09-06 once every live config had migrated).
if let Some(radius) = val.pointer("/style/surface/plate/root/corner_radius")
.and_then(|v| v.as_f64())
{
- if let Ok(mut lock) = BACKPLATE_CORNER_RADIUS.write() {
+ if let Ok(mut lock) = ROOT_PLATE_CORNER_RADIUS.write() {
*lock = radius as f32;
}
}
if let Some(c) = get_color("/style/surface/plate/root/color") {
if let Ok(mut lock) = PAGE_LOW_COLOR.write() { *lock = c; }
- if let Ok(mut lock) = BACKPLATE_OPACITY.write() { *lock = Some(c[3]); }
+ if let Ok(mut lock) = ROOT_PLATE_OPACITY.write() { *lock = Some(c[3]); }
}
if let Some(c) = get_color("/style/surface/plate/root/menubar/color") {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_COLOR.write() { *lock = c; }
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_COLOR.write() { *lock = c; }
}
if let Some(c) = get_color("/style/surface/plate/root/menubar/text_color") {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_TEXT_COLOR.write() { *lock = c; }
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_TEXT_COLOR.write() { *lock = c; }
}
if let Some(o) = val.pointer("/style/surface/menu/opacity").and_then(|v| v.as_f64()) {
if let Ok(mut lock) = MENU_OPACITY.write() { *lock = (o as f32).clamp(0.0, 1.0); }
@@ -313,21 +313,21 @@ fn parse_and_set_colors(content: &str) {
let menubar_blur_ptr = val.pointer("/style/surface/plate/root/menubar/blur");
if let Some(blur) = menubar_blur_ptr.and_then(|v| v.as_bool()) {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_BLUR.write() { *lock = blur; }
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_BLUR.write() { *lock = blur; }
} else if let Some(blur_val) = menubar_blur_ptr.and_then(|v| v.as_f64()) {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_BLUR.write() { *lock = blur_val > 0.001; }
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_BLUR.write() { *lock = blur_val > 0.001; }
}
if let Some(c) = get_color("/style/surface/statusbar/color") {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_COLOR.write() { *lock = c; }
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_COLOR.write() { *lock = c; }
}
if let Some(c) = get_color("/style/surface/statusbar/text_color") {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_TEXT_COLOR.write() { *lock = c; }
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_TEXT_COLOR.write() { *lock = c; }
}
if let Some(blur) = val.pointer("/style/surface/statusbar/blur").and_then(|v| v.as_bool()) {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_BLUR.write() { *lock = blur; }
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_BLUR.write() { *lock = blur; }
} else if let Some(blur_val) = val.pointer("/style/surface/statusbar/blur").and_then(|v| v.as_f64()) {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_BLUR.write() { *lock = blur_val > 0.001; }
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_BLUR.write() { *lock = blur_val > 0.001; }
}
if let Some(c) = get_color("/layout/color_borders_color") {
if let Ok(mut lock) = COLOR_BORDERS_COLOR.write() { *lock = c; }
@@ -840,7 +840,7 @@ pub fn set_graph_opacity(opacity: f32) {
pub fn page_low_color() -> [f32; 4] {
load_colors_once();
let mut color = *PAGE_LOW_COLOR.read().unwrap();
- if let Some(opacity) = read_backplate_opacity_if_configured() {
+ if let Some(opacity) = read_root_plate_opacity_if_configured() {
color[3] = opacity;
}
color
@@ -1166,9 +1166,9 @@ pub fn menu_opacity() -> f32 {
*MENU_OPACITY.read().unwrap()
}
-pub fn read_backplate_opacity_if_configured() -> Option<f32> {
+pub fn read_root_plate_opacity_if_configured() -> Option<f32> {
load_colors_once();
- *BACKPLATE_OPACITY.read().unwrap()
+ *ROOT_PLATE_OPACITY.read().unwrap()
}
// The toggle's own palette (enabled/disabled/background) is RETIRED: a toggle
@@ -1247,7 +1247,7 @@ pub fn set_popover_bg_color(color: [f32; 4]) {
/// copy of this.
pub fn root_plate_corner_radius() -> f32 {
load_colors_once();
- *BACKPLATE_CORNER_RADIUS.read().unwrap()
+ *ROOT_PLATE_CORNER_RADIUS.read().unwrap()
}
pub fn ramp_background_color() -> [f32; 4] {
@@ -1502,8 +1502,8 @@ pub fn set_checkbox_hover(color: [f32; 4]) {
}
}
-pub fn set_backplate_corner_radius(radius: f32) {
- if let Ok(mut lock) = BACKPLATE_CORNER_RADIUS.write() {
+pub fn set_root_plate_corner_radius(radius: f32) {
+ if let Ok(mut lock) = ROOT_PLATE_CORNER_RADIUS.write() {
*lock = radius;
}
}
@@ -1658,56 +1658,56 @@ pub fn set_list_close_search_key(k: String) {
pub fn root_plate_menubar_color() -> [f32; 4] {
load_colors_once();
- *BACKPLATE_MENUBAR_COLOR.read().unwrap()
+ *ROOT_PLATE_MENUBAR_COLOR.read().unwrap()
}
-pub fn set_backplate_menubar_color(c: [f32; 4]) {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_COLOR.write() { *lock = c; }
+pub fn set_root_plate_menubar_color(c: [f32; 4]) {
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_COLOR.write() { *lock = c; }
}
pub fn root_plate_menubar_text_color() -> [f32; 4] {
load_colors_once();
- *BACKPLATE_MENUBAR_TEXT_COLOR.read().unwrap()
+ *ROOT_PLATE_MENUBAR_TEXT_COLOR.read().unwrap()
}
-pub fn set_backplate_menubar_text_color(c: [f32; 4]) {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_TEXT_COLOR.write() { *lock = c; }
+pub fn set_root_plate_menubar_text_color(c: [f32; 4]) {
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_TEXT_COLOR.write() { *lock = c; }
}
pub fn root_plate_menubar_blur() -> bool {
load_colors_once();
- *BACKPLATE_MENUBAR_BLUR.read().unwrap()
+ *ROOT_PLATE_MENUBAR_BLUR.read().unwrap()
}
-pub fn set_backplate_menubar_blur(b: bool) {
- if let Ok(mut lock) = BACKPLATE_MENUBAR_BLUR.write() { *lock = b; }
+pub fn set_root_plate_menubar_blur(b: bool) {
+ if let Ok(mut lock) = ROOT_PLATE_MENUBAR_BLUR.write() { *lock = b; }
}
pub fn root_plate_statusbar_color() -> [f32; 4] {
load_colors_once();
- *BACKPLATE_STATUSBAR_COLOR.read().unwrap()
+ *ROOT_PLATE_STATUSBAR_COLOR.read().unwrap()
}
-pub fn set_backplate_statusbar_color(c: [f32; 4]) {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_COLOR.write() { *lock = c; }
+pub fn set_root_plate_statusbar_color(c: [f32; 4]) {
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_COLOR.write() { *lock = c; }
}
pub fn root_plate_statusbar_text_color() -> [f32; 4] {
load_colors_once();
- *BACKPLATE_STATUSBAR_TEXT_COLOR.read().unwrap()
+ *ROOT_PLATE_STATUSBAR_TEXT_COLOR.read().unwrap()
}
-pub fn set_backplate_statusbar_text_color(c: [f32; 4]) {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_TEXT_COLOR.write() { *lock = c; }
+pub fn set_root_plate_statusbar_text_color(c: [f32; 4]) {
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_TEXT_COLOR.write() { *lock = c; }
}
pub fn root_plate_statusbar_blur() -> bool {
load_colors_once();
- *BACKPLATE_STATUSBAR_BLUR.read().unwrap()
+ *ROOT_PLATE_STATUSBAR_BLUR.read().unwrap()
}
-pub fn set_backplate_statusbar_blur(b: bool) {
- if let Ok(mut lock) = BACKPLATE_STATUSBAR_BLUR.write() { *lock = b; }
+pub fn set_root_plate_statusbar_blur(b: bool) {
+ if let Ok(mut lock) = ROOT_PLATE_STATUSBAR_BLUR.write() { *lock = b; }
}
static PLATE_COLOR: RwLock<Option<[f32; 4]>> = RwLock::new(Some([0.15, 0.15, 0.2, 0.95]));
diff --git a/src/config.rs b/src/config.rs
index 198f667..aff8969 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1030,7 +1030,7 @@ mod tests {
}
/// `style.surface.plate.root.*` is the only root-plate spelling: the
- /// legacy `backplate.*` block is ignored, whether it stands beside the
+ /// legacy `root plate.*` block is ignored, whether it stands beside the
/// canonical block or alone (its read-alias was removed 2026-09-06).
#[test]
fn test_plate_root_canonical_spelling() {
diff --git a/src/context.rs b/src/context.rs
index 0d45670..b8b83ae 100644
--- a/src/context.rs
+++ b/src/context.rs
@@ -922,7 +922,7 @@ impl UiContext {
false
}
- /// The window-drag question (Phase 6: every root `Backplate` is dissolved, so the surface
+ /// The window-drag question (Phase 6: every root plate container is dissolved, so the surface
/// itself is the movable plate): a drag may start anywhere no drag-blocking widget sits
/// under the cursor.
pub fn drag_allowed_at(&self, px: f32, py: f32) -> bool {
@@ -943,7 +943,7 @@ impl UiContext {
let w = &*ptr;
let is_hit = w.hit_test(px, py, self)
|| (scroll_y != 0.0 && w.hit_test(px, py + scroll_y, self));
- if is_hit && w.blocks_backplate_drag() {
+ if is_hit && w.blocks_root_plate_drag() {
return false;
}
}
@@ -967,7 +967,7 @@ impl UiContext {
if !ptr.is_null() {
let w = &*ptr;
let is_hit = w.hit_test(px, py, self) || (scroll_y != 0.0 && w.hit_test(px, py + scroll_y, self));
- if is_hit && w.blocks_backplate_drag() {
+ if is_hit && w.blocks_root_plate_drag() {
return true;
}
}
diff --git a/src/layout.rs b/src/layout.rs
index 252278f..29ded73 100644
--- a/src/layout.rs
+++ b/src/layout.rs
@@ -165,20 +165,20 @@ fn flatten_json_to_flat_props(val: &serde_json::Value, prefix: &str, flat_props:
"style.surface.plate.padding" => "plate_padding",
// `style.surface.plate.root.*` is the one spelling of the
// root-plate style (RFC Phase 7a). The slot names keep the
- // historical `backplate_` prefix; the legacy `backplate.*`
+ // historical `root_plate_` prefix; the legacy `root plate.*`
// config read-alias was removed 2026-09-06.
- "style.surface.plate.root.padding" => "backplate_padding",
- "style.surface.plate.root.gap" => "backplate_gap",
- "style.surface.plate.root.color" => "backplate_color",
- "style.surface.plate.root.blur" => "backplate_blur",
- "style.surface.plate.root.corner_radius" => "backplate_corner_radius",
- "style.surface.plate.root.menubar.color" => "backplate_menubar_color",
- "style.surface.plate.root.menubar.text_color" => "backplate_menubar_text_color",
- "style.surface.plate.root.menubar.blur" => "backplate_menubar_blur",
+ "style.surface.plate.root.padding" => "root_plate_padding",
+ "style.surface.plate.root.gap" => "root_plate_gap",
+ "style.surface.plate.root.color" => "root_plate_color",
+ "style.surface.plate.root.blur" => "root_plate_blur",
+ "style.surface.plate.root.corner_radius" => "root_plate_corner_radius",
+ "style.surface.plate.root.menubar.color" => "root_plate_menubar_color",
+ "style.surface.plate.root.menubar.text_color" => "root_plate_menubar_text_color",
+ "style.surface.plate.root.menubar.blur" => "root_plate_menubar_blur",
"style.surface.plate.root.menubar.font" => "menubar_font",
- "style.surface.statusbar.color" => "backplate_statusbar_color",
- "style.surface.statusbar.text_color" => "backplate_statusbar_text_color",
- "style.surface.statusbar.blur" => "backplate_statusbar_blur",
+ "style.surface.statusbar.color" => "root_plate_statusbar_color",
+ "style.surface.statusbar.text_color" => "root_plate_statusbar_text_color",
+ "style.surface.statusbar.blur" => "root_plate_statusbar_blur",
"style.surface.statusbar.font" => "statusbar_font",
"style.surface.page.opacity" => "page_opacity",
"style.surface.page.margin" => "page_margin",
@@ -1588,7 +1588,7 @@ pub fn corner_shape() -> f32 {
}
/// The window silhouette's nominal corner radius: the SHARED config's
-/// backplate corner_radius, never the per-app override. The compositor clips
+/// root plate corner_radius, never the per-app override. The compositor clips
/// every decorated window with this value (widened by
/// [`corner_span_factor`]), so any window-corner arc an app draws itself must
/// use it too — even when the app restyles its own plates through its
@@ -1792,7 +1792,7 @@ pub fn bevel_profile_generation() -> u64 {
/// every app's content sits the same distance off the plate rim.
pub fn root_plate_padding() -> f32 {
lazy_init_style_registry();
- get_style_registry().read().unwrap().get_float("backplate_padding").unwrap_or(16.0)
+ get_style_registry().read().unwrap().get_float("root_plate_padding").unwrap_or(16.0)
}
/// Gap between sibling objects on the window plate, in logical px
@@ -1800,7 +1800,7 @@ pub fn root_plate_padding() -> f32 {
/// rim distance vs object spacing.
pub fn root_plate_gap() -> f32 {
lazy_init_style_registry();
- get_style_registry().read().unwrap().get_float("backplate_gap").unwrap_or(12.0)
+ get_style_registry().read().unwrap().get_float("root_plate_gap").unwrap_or(12.0)
}
/// Roll-off width for the wall where a bar (menubar / status bar / the demo's
@@ -1934,7 +1934,7 @@ pub fn plate_corner_radius() -> f32 {
lazy_init_style_registry();
let r = get_style_registry().read().unwrap();
r.get_float("plate_corner_radius")
- .or_else(|| r.get_float("backplate_corner_radius"))
+ .or_else(|| r.get_float("root_plate_corner_radius"))
.unwrap_or(12.0)
}
diff --git a/src/main.rs b/src/main.rs
index 3392827..359798d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -16,7 +16,7 @@
//! Enter/Leave synthesis, drag-target recording, and KeyInput-to-focused delivery;
//! the app keeps only state-gated `take_*` plumbing.
//! 4. **No embedded bases.** Widgets are app-owned values (all [`Adapted`]); the window
-//! plate is prims, not a `Backplate`; popovers draw INTO the frame (there is no popup
+//! plate is prims, not a root plate container; popovers draw INTO the frame (there is no popup
//! surface); app state — not any widget tree — is the source of truth.
use cce_ui::engine::{Application, EngineState, LogicalPosition, LogicalSize, WindowSettings};
@@ -356,7 +356,7 @@ impl Application for DemoApp {
let w = self.width as f32;
let h = self.height as f32;
- // The window plate — the dissolved root Backplate as a lit object: page-low color
+ // The window plate — the dissolved root plate container as a lit object: page-low color
// at the configured opacity, config corner radius, perimeter rolled over
// `bevel_width` so the surface reads as a physical plate rather than a flat fill.
let mut plate = cce_ui::color::page_low_color();
@@ -469,7 +469,7 @@ impl Application for DemoApp {
/// Window dragging for a dissolved root: the surface is the movable plate; drag
/// anywhere a drag-blocking registered widget isn't.
- fn is_movable_backplate_at(&self, px: f32, py: f32) -> bool {
+ fn is_movable_root_plate_at(&self, px: f32, py: f32) -> bool {
self.ui_context.drag_allowed_at(px, py)
}
diff --git a/src/scene/arena.rs b/src/scene/arena.rs
index 76eef38..315f316 100644
--- a/src/scene/arena.rs
+++ b/src/scene/arena.rs
@@ -2,7 +2,7 @@
//!
//! This is Phase 1 of the core rebuild (see `docs/rfc-core-rebuild.md`). It replaces the old
//! model where the widget tree was smeared across three parallel stores kept in sync by hand
-//! (`Backplate.children: Vec<*mut dyn WidgetHost>`, `UiContext.layout_tree`, and
+//! (`root plate container.children: Vec<*mut dyn WidgetHost>`, `UiContext.layout_tree`, and
//! `UiContext.widget_registry`) and traversed through raw `*mut dyn WidgetHost` pointers that
//! `Drop` did not fully clear.
//!
diff --git a/src/scene/paint.rs b/src/scene/paint.rs
index 290367c..94ab36b 100644
--- a/src/scene/paint.rs
+++ b/src/scene/paint.rs
@@ -350,7 +350,7 @@ pub enum Prim {
Bevel { rect: Rect, radii: Radii, color: [f32; 4], depth: f32, tint: [f32; 3] },
/// A recess carved into whatever is already painted underneath — the inverse of
/// `Bevel`. Emits ONLY the shaded edges, never a fill, so the surface below shows
- /// through the middle: a relief cut into the backplate rather than a plate laid on
+ /// through the middle: a relief cut into the root plate rather than a plate laid on
/// top of it. The light vector is negated relative to `Bevel`, so the edges facing
/// `light_source_position` fall into shadow and the far edges catch the light —
/// which is what reads as "lower" instead of "raised".
@@ -370,7 +370,7 @@ pub enum Prim {
/// The inverse of [`Prim::Recess`]: a plateau RAISED out of the surface below.
/// Like `Recess` it emits only the shaded edges, never a fill — the face is the
/// untouched surface underneath — so a region outlined by raised rolled bumps
- /// keeps the backplate's own color and translucency. Same wall semantics as
+ /// keeps the root plate's own color and translucency. Same wall semantics as
/// `Recess` (`edges` = top/right/bottom/left); the lighting is the raised sign,
/// so the edges facing `light_source_position` catch the light. `tint` colors
/// the lit rim like [`Prim::Recess`]'s — the focused-pane treatment for a
@@ -914,7 +914,7 @@ impl PaintCtx {
/// Raise a plateau out of the already-painted surface below — the inverse of
/// [`PaintCtx::recess`]. Only the edges are shaded; the face stays the surface
- /// beneath, so the raised region inherits the backplate's color. `depth` is the
+ /// beneath, so the raised region inherits the root plate's color. `depth` is the
/// roll width in px (pass [`crate::layout::bevel_width`] unless the widget
/// needs a tighter lip).
pub fn boss(&mut self, rect: Rect, radii: Radii, depth: f32) {
diff --git a/src/widget/container/menu.rs b/src/widget/container/menu.rs
index 59435bf..ad6191e 100644
--- a/src/widget/container/menu.rs
+++ b/src/widget/container/menu.rs
@@ -33,7 +33,7 @@ pub struct MenuBar {
pub curved_circle: Option<(f32, f32, f32)>,
pub blur: bool,
pub color: Option<[f32; 4]>,
- /// Draw as a recess carved into the window backplate instead of as an opaque bar:
+ /// Draw as a recess carved into the window root plate instead of as an opaque bar:
/// no background fill of its own, just shaded edges, so the plate shows through.
/// `color` is ignored while this is set — see [`Adapted::<MenuBar>::with_recess`].
pub recessed: bool,
@@ -354,7 +354,7 @@ impl Adapted<MenuBar> {
self
}
- /// Drop the bar's own background and carve it into the window backplate instead, so
+ /// Drop the bar's own background and carve it into the window root plate instead, so
/// the plate reads as recessed under the menu — a relief cut into the surface rather
/// than a slab sitting on it. Shading follows the DE-wide `light_source_position` /
/// `bevel_depth` config, inverted so the light-facing edges are the shadowed ones.
@@ -448,7 +448,7 @@ impl Paint for MenuBar {
}
fn corner_style(&self, _rect: Rect) -> Option<(f32, (bool, bool, bool, bool))> {
- // Corners never round (the backplate-adjacency source is gone). The radius was the
+ // Corners never round (the root plate-adjacency source is gone). The radius was the
// parent's, read through a stored pointer — but nothing ever set_parent's a MenuBar,
// so 0.0 is what production always read (6bd: the dead pointer field is gone).
Some((0.0, (false, false, false, false)))
@@ -465,7 +465,7 @@ impl Paint for MenuBar {
fn paint(&self, rect: Rect, ctx: &mut PaintCtx) {
if self.recessed {
- // No background of our own: carve the backplate instead. The recess shading is
+ // No background of our own: carve the root plate instead. The recess shading is
// a light/shadow overlay, so whatever the plate painted here (fill, rim
// gradient, blur) shows through modulated.
// `depth` is the roll-off width in px (the shading amplitude is separate: the
@@ -489,7 +489,7 @@ impl Paint for MenuBar {
}
} else {
// Background: always the plain quad — the rounded-against-parent variant required a
- // backplate parent, which no longer exists.
+ // root plate parent, which no longer exists.
ctx.quad(rect, self.bg_color());
}
@@ -761,7 +761,7 @@ impl Paint for MenuBar {
}
impl Input for MenuBar {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
diff --git a/src/widget/container/paginator.rs b/src/widget/container/paginator.rs
index 5a7e2e7..455e8d0 100644
--- a/src/widget/container/paginator.rs
+++ b/src/widget/container/paginator.rs
@@ -7,7 +7,7 @@
//! Two legacy behaviors ride hooks from the 5r migration:
//! - [`Layout::register_embedded_children`]: legacy `tick`/`layout` re-registered the strip into
//! the ctx registry every frame — load-bearing for the spatial grid (the registered strip is
-//! what makes the sidebar block backplate drags).
+//! what makes the sidebar block root plate drags).
//! - [`Paint::aggregates_child_extra_quads`] + [`Paint::forwarded_highlight`]: legacy
//! `extra_quads` served the strip's chrome only (cce-mail and cce-layout-interface render
//! the tab column through that getter — the paginator's own background quads live in
@@ -211,7 +211,7 @@ impl Paint for Paginator {
}
impl Input for Paginator {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
@@ -330,7 +330,7 @@ mod tests {
}
// The embedded strip + pages land in the registry on tick (the spatial grid feeds off
- // it — the registered strip is what blocks backplate drags over the sidebar).
+ // it — the registered strip is what blocks root plate drags over the sidebar).
WidgetHost::tick(&mut p, 0.016, &mut ctx);
let strip_id = p.sidebar_menu.id();
assert!(
diff --git a/src/widget/container/treelist.rs b/src/widget/container/treelist.rs
index 8b3576e..29f2e1d 100644
--- a/src/widget/container/treelist.rs
+++ b/src/widget/container/treelist.rs
@@ -1080,7 +1080,7 @@ impl Paint for TreeList {
}
impl Input for TreeList {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
true
}
@@ -1419,8 +1419,8 @@ mod tests {
#[test]
fn test_treelist_blocks_window_drag() {
- // Backplate is DELETED: dissolved windows ask `drag_allowed_at` instead — same
- // walk, minus the registered-movable-Backplate requirement.
+ // root plate container is DELETED: dissolved windows ask `drag_allowed_at` instead — same
+ // walk, minus the registered-movable-root plate container requirement.
let mut ctx = UiContext::new();
let mut tree_list = TreeList::new();
tree_list.set_rect(10.0, 52.0, 380.0, 500.0);
diff --git a/src/widget/display/graph.rs b/src/widget/display/graph.rs
index a14580e..6d21de3 100644
--- a/src/widget/display/graph.rs
+++ b/src/widget/display/graph.rs
@@ -354,7 +354,7 @@ impl Graph {
}
/// The grid cells' rounded-corner radius at the current zoom: the desktop
- /// grid's corner PROPORTION — the DE backplate radius per 512 virtual
+ /// grid's corner PROPORTION — the DE root plate radius per 512 virtual
/// units of cell, span-widened (cce-grid draws exactly this on its
/// 512vu cells) — applied to this grid's cell size, so the pane's cells
/// read as miniatures of the desktop's. Clamped to a quarter sweep;
diff --git a/src/widget/display/label.rs b/src/widget/display/label.rs
index 80a64f9..56d9fa4 100644
--- a/src/widget/display/label.rs
+++ b/src/widget/display/label.rs
@@ -81,7 +81,7 @@ impl Paint for Label {
}
impl Input for Label {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
}
@@ -109,7 +109,7 @@ mod tests {
let size = l.intrinsic_size().unwrap();
assert!(size.width > 0.0);
- assert!(!WidgetHost::blocks_backplate_drag(&l));
+ assert!(!WidgetHost::blocks_root_plate_drag(&l));
}
}
diff --git a/src/widget/display/separator.rs b/src/widget/display/separator.rs
index b5cb77d..61c7b4e 100644
--- a/src/widget/display/separator.rs
+++ b/src/widget/display/separator.rs
@@ -27,7 +27,7 @@ impl Paint for Separator {
}
impl Input for Separator {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
}
@@ -42,7 +42,7 @@ mod tests {
assert_eq!(WidgetHost::rect(&sep), (100.0, 0.0, 1.0, 24.0));
assert_eq!(WidgetHost::color(&sep), [0.3, 0.3, 0.3, 1.0]);
assert_eq!(WidgetHost::extra_quads(&sep), vec![(100.0, 0.0, 1.0, 24.0, [0.3, 0.3, 0.3, 1.0])]);
- assert!(!WidgetHost::blocks_backplate_drag(&sep));
+ assert!(!WidgetHost::blocks_root_plate_drag(&sep));
}
/// The status bar's vertical-rotation pattern, post-migration: transpose via rect/set_rect.
diff --git a/src/widget/display/status_bar.rs b/src/widget/display/status_bar.rs
index bb86254..54d0fbc 100644
--- a/src/widget/display/status_bar.rs
+++ b/src/widget/display/status_bar.rs
@@ -1,5 +1,5 @@
//! Narrow-trait `StatusBar` (Phase 5t) — a one-line text bar whose theming is parent-coupled
-//! exactly like MenuBar's: when its tracked parent is a Backplate it pulls the backplate
+//! exactly like MenuBar's: when its tracked parent is a root plate container it pulls the root plate
//! statusbar color/text-color/blur and derives its rounded corners from where it sits against
//! the parent's edges ([`Paint::corner_style`] + the corners walk). Two text paths: the
//! [`Paint::paint`] prim (carrying the configured statusbar font — the legacy default-font
@@ -20,7 +20,7 @@ pub struct StatusBar {
pub text_offset_x: Option<f32>,
pub text_color: Option<[f32; 4]>,
pub bg_color: Option<[f32; 4]>,
- /// Draw as a step carved into the window backplate instead of an opaque slab: no
+ /// Draw as a step carved into the window root plate instead of an opaque slab: no
/// background fill of its own, just the shaded wall facing the content, so the plate
/// shows through. `bg_color` is ignored while this is set — see
/// [`Adapted::<StatusBar>::with_recess`].
@@ -86,7 +86,7 @@ impl Adapted<StatusBar> {
self
}
- /// Drop the bar's own background and sink it into the window backplate instead, the
+ /// Drop the bar's own background and sink it into the window root plate instead, the
/// mirror of `MenuBar::with_recess`. A status bar always sits flush with the bottom of
/// the plate, so it is shaded as a plateau one step down whose only wall is the top one
/// (facing the content) — the other three sides are the plate's outer edge, which
@@ -117,7 +117,7 @@ impl Paint for StatusBar {
}
fn corner_style(&self, _rect: Rect) -> Option<(f32, (bool, bool, bool, bool))> {
- // Corners never round (the backplate-adjacency source is gone). The radius was the
+ // Corners never round (the root plate-adjacency source is gone). The radius was the
// parent's, read through a stored pointer — but nothing ever set_parent's a StatusBar,
// so 0.0 is what production always read (6bd: the dead pointer field is gone).
Some((0.0, (false, false, false, false)))
@@ -146,7 +146,7 @@ impl Paint for StatusBar {
ctx.recess_edges(rect, (0.0, 0.0, 0.0, 0.0), depth, (true, false, false, false));
} else {
// Always the plain background quad — the rounded-against-parent variant required a
- // backplate parent, which no longer exists.
+ // root plate parent, which no longer exists.
ctx.quad(rect, self.bg());
}
@@ -190,7 +190,7 @@ impl Paint for StatusBar {
}
impl Input for StatusBar {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
}
@@ -226,7 +226,7 @@ mod tests {
let extra = WidgetHost::extra_quads(&bar);
assert_eq!(extra.len(), 1, "cornerless bg quad");
assert_eq!(WidgetHost::corner_style(&bar).1, (false, false, false, false));
- assert!(!WidgetHost::blocks_backplate_drag(&bar));
+ assert!(!WidgetHost::blocks_root_plate_drag(&bar));
}
/// The paint walk strips prim fonts and re-fonts labels via `Paint::text_font` — the
diff --git a/src/widget/display/status_dot.rs b/src/widget/display/status_dot.rs
index ecf62bf..7ed4949 100644
--- a/src/widget/display/status_dot.rs
+++ b/src/widget/display/status_dot.rs
@@ -48,7 +48,7 @@ impl Paint for StatusDot {
}
impl Input for StatusDot {
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
false
}
}
@@ -67,7 +67,7 @@ mod tests {
vec![(5.0, 6.0, 10.0, 10.0, [0.90, 0.60, 0.10, 1.0])],
);
// Drags pass through, as legacy declared.
- assert!(!WidgetHost::blocks_backplate_drag(&dot));
+ assert!(!WidgetHost::blocks_root_plate_drag(&dot));
// State mutation through Deref, as call sites write it.
dot.set_status(DotStatus::Error);
assert_eq!(dot.status, DotStatus::Error);
diff --git a/src/widget/input/dropdown.rs b/src/widget/input/dropdown.rs
index 39d8a8c..f03884b 100644
--- a/src/widget/input/dropdown.rs
+++ b/src/widget/input/dropdown.rs
@@ -8,7 +8,7 @@
//! pointer: legacy `set_parent` never wrote it (the WidgetHost default only touched the tree —
//! Ramp's dummy-ctx `set_parent` calls were silently discarded), so the Ramp popover clamp
//! and the fade-blend parent color activate only for callers that assign the field, exactly
-//! as before — no production writer exists. The backplate-concentric corner walk it once
+//! as before — no production writer exists. The root plate-concentric corner walk it once
//! anchored is gone outright (replaced by the app-owned `corner_frame`, Phase 6s).
//! - The row-rect hit expansion (`base.row_x/row_w`) is dropped, consistent with every other
//! migrated control: `Input::hit` tests the widget rect plus the open popover.
@@ -111,8 +111,8 @@ pub struct Dropdown {
hovered: bool,
/// App-owned concentric frame (Phase 6s): `(rect, radius, corners)` of the rounded plate
/// the dropdown sits in. When set, the corner adjustment uses it INSTEAD of walking for a
- /// `Backplate` ancestor — the hook that keeps the adjustment after an app dissolves its
- /// root Backplate (the walk finds nothing once the widget is parentless).
+ /// root plate container ancestor — the hook that keeps the adjustment after an app dissolves its
+ /// root plate container (the walk finds nothing once the widget is parentless).
corner_frame: Option<((f32, f32, f32, f32), f32, (bool, bool, bool, bool))>,
/// Raised style: the closed control's background is an SDF-lit `Bevel`
/// plate (fill + rolled lit edge) instead of a flat fill + border stroke.
@@ -424,7 +424,7 @@ impl Dropdown {
}
/// Emit the border + background geometry — the legacy `all_rounded_quads` body (rounded,
- /// with the backplate-concentric corner adjustment) or `extra_quads` (plain) depending on
+ /// with the root plate-concentric corner adjustment) or `extra_quads` (plain) depending on
/// the configured radius, byte-for-byte on the same content rect.
fn paint_background(&self, content: Rect, ctx: &mut PaintCtx) {
let label_x = side_offset(&self.label);
@@ -598,7 +598,7 @@ impl Dropdown {
let mut inner_radii = [inner_radius; 4];
// Only an explicit corner_frame adjusts concentric corners now — the legacy fallback
- // walked ancestors for a backplate, which no longer exists.
+ // walked ancestors for a root plate, which no longer exists.
let frame = self.corner_frame;
if let Some(((px, py, pw, ph), pr, (pr1, pr2, pr3, pr4))) = frame {
let g_left = x - px;
diff --git a/src/widget/mod.rs b/src/widget/mod.rs
index 083131a..c36d06c 100644
--- a/src/widget/mod.rs
+++ b/src/widget/mod.rs
@@ -427,7 +427,7 @@ pub trait WidgetHost {
// trap). Migrated widgets go through `Adapted::paint_self`, never this default.
}
- /// Whether the paint walk should clip this widget's children to its rect (scroll/backplate
+ /// Whether the paint walk should clip this widget's children to its rect (scroll/root plate
/// containers). Default: no clipping.
fn clips_children(&self) -> bool { false }
@@ -504,7 +504,7 @@ pub trait WidgetHost {
fn z_index(&self) -> i32 { 0 }
fn is_scrollable(&self) -> bool { false }
- fn blocks_backplate_drag(&self) -> bool { true }
+ fn blocks_root_plate_drag(&self) -> bool { true }
/// Uniform corner radius + per-corner on-flags, in one read (6bd batch 2 — replaced the
/// separate `corner_radius`/`rounded_corners` getters). The radius is meaningful even with
diff --git a/src/widget/model.rs b/src/widget/model.rs
index 808cf5a..bdf7aca 100644
--- a/src/widget/model.rs
+++ b/src/widget/model.rs
@@ -140,7 +140,7 @@ pub trait Layout {
/// `layout` because the children's addresses move with the owning struct (host struct moves,
/// `Vec` reallocation) — and the registration is load-bearing: the spatial grid is rebuilt
/// from registered widgets, and it is the registered ButtonStrip (whose
- /// `blocks_backplate_drag` is true) that makes the sidebar block backplate drags. The
+ /// `blocks_root_plate_drag` is true) that makes the sidebar block root plate drags. The
/// adapter calls this from `WidgetHost::tick` and `WidgetHost::layout`, mirroring the legacy
/// cadence. `host_id` is the adapter's id, for `link_ids`. Default: nothing embedded.
fn register_embedded_children(&mut self, _host_id: WidgetId, _ctx: &mut UiContext) {}
@@ -174,7 +174,7 @@ pub trait Paint {
self.paint(rect, ctx);
}
- /// Whether the paint walk clips this widget's children to its `rect` (scroll/backplate
+ /// Whether the paint walk clips this widget's children to its `rect` (scroll/root plate
/// containers). Default: no.
fn clips_children(&self) -> bool {
false
@@ -403,10 +403,10 @@ pub trait Input {
false
}
- /// Whether pressing on this widget blocks dragging the movable backplate under it. Passive
+ /// Whether pressing on this widget blocks dragging the movable root plate under it. Passive
/// display widgets (separators, status dots) return `false` so drags pass through them.
/// Default: `true`, matching the legacy `WidgetHost` default.
- fn blocks_backplate_drag(&self) -> bool {
+ fn blocks_root_plate_drag(&self) -> bool {
true
}
@@ -1438,8 +1438,8 @@ impl<W: Layout + Paint + Input + 'static> WidgetHost for Adapted<W> {
}
// --- Input concern -> `Input` ---
- fn blocks_backplate_drag(&self) -> bool {
- Input::blocks_backplate_drag(&self.inner)
+ fn blocks_root_plate_drag(&self) -> bool {
+ Input::blocks_root_plate_drag(&self.inner)
}
fn context_action(&mut self, action: crate::widget::ContextAction) -> bool {
Input::context_action(&mut self.inner, action)