widget gallery and compositor test bench
refactor: reach the Paginator's sidebar width by concrete downcast (Phase 6aw)
widgets[1].as_page_selector() dies with Element's capability hooks; the
three sidebar_w reads downcast to the Paginator (as_any exposes the
adapter's inner widget) and call PageSelector on it directly.
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018u7qTwzX95dd5ysAkaSCLk
src/main.rs | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/main.rs b/src/main.rs
index 4a11d18..7aa5382 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -540,7 +540,9 @@ cascades in cce."
let positions = if is_child {
child_positions(c_w, c_h, use_backplate, use_menubar, use_statusbar, child_type.as_deref())
} else {
- let sidebar_w = widgets[1].as_page_selector().unwrap().sidebar_w();
+ let sidebar_w = cce_ui::widget::PageSelector::sidebar_w(
+ widgets[1].as_any().downcast_ref::<cce_ui::widget::Paginator>().expect("widgets[1] must be the Paginator"),
+ );
demo_positions(c_w, c_h, sidebar_w, 9, &widgets)
};
@@ -739,7 +741,9 @@ cascades in cce."
self.positions = if self.is_child {
child_positions(self.width, self.height, self.use_backplate, self.use_menubar, self.use_statusbar, self.child_type.as_deref())
} else {
- let sidebar_w = self.widgets[1].as_page_selector().unwrap().sidebar_w();
+ let sidebar_w = cce_ui::widget::PageSelector::sidebar_w(
+ self.widgets[1].as_any().downcast_ref::<cce_ui::widget::Paginator>().expect("widgets[1] must be the Paginator"),
+ );
demo_positions(self.width, self.height, sidebar_w, self.layout_idx, &self.widgets)
};
self.apply_layout();
@@ -1288,7 +1292,7 @@ cascades in cce."
changed = true;
} else if self.widgets[52].take_click() {
self.layout_idx = self.widgets[52].value() as usize;
- self.positions = demo_positions(self.width, self.height, self.widgets[1].as_page_selector().unwrap().sidebar_w(), self.layout_idx, &self.widgets);
+ self.positions = demo_positions(self.width, self.height, cce_ui::widget::PageSelector::sidebar_w(self.widgets[1].as_any().downcast_ref::<cce_ui::widget::Paginator>().expect("widgets[1] must be the Paginator")), self.layout_idx, &self.widgets);
self.apply_layout();
changed = true;
} else if self.current_page == Page::Controls {