widget gallery and compositor test bench
refactor!: drop the seven dead label slots (4-8, 17, 23)
label4..label8, label17 and label23 were empty Labels that no layout table
ever positioned: 4, 5, 7 and 8 sat at the origin with zero size, 6, 17 and
23 were parked at -1000. None was ever drawn or clicked. They date from the
Vec<Box<dyn Element>> era, where a slot could not be skipped, and survived
the concrete-typing of the roster only because the numeric indexes did.
GALLERY_COUNT drops from 52 to 45 and every slot above 3 renumbers: the
visibility ranges, CP_CHILDREN, is_control_panel_child, demo_positions,
the click sets and the value reads. child_positions and the child roster
are untouched (their indexes are ChildSlots', not the gallery's).
Verified in a shadow session: the Controls and Windows pages render
pixel-identically to before, Create Window maps a cce-gallery-child-toplevel
and Ramp... maps a cce-gallery-child-ramp, no panics.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
README.md | 2 +-
src/main.rs | 721 ++++++++++++++++++++++++++++--------------------------------
2 files changed, 339 insertions(+), 384 deletions(-)
diff --git a/README.md b/README.md
index c446c39..6710963 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ for example).
## Layout of the source
- `src/main.rs` — the `Application` impl. The gallery is a concretely typed
- roster of 52 named slots (`GallerySlots`) addressed by numeric index in the
+ roster of 45 named slots (`GallerySlots`) addressed by numeric index in the
layout tables, visibility filters and dispatch loops; child windows use the
five-slot `ChildSlots`. `demo_positions` and `child_positions` are the
layout tables.
diff --git a/src/main.rs b/src/main.rs
index 3623052..010c91a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -17,7 +17,7 @@ enum Page {
}
-/// The gallery roster, concretely typed (Phase 6bb): 52 named slots replacing the erased
+/// The gallery roster, concretely typed (Phase 6bb): 45 named slots replacing the erased
/// `Vec<Box<dyn WidgetHost>>`. The historical numeric indexes (positions vec, dispatch loops,
/// page layouts) keep addressing the same slots through `get_dyn`/`get_dyn_mut`.
pub struct GallerySlots {
@@ -25,11 +25,6 @@ pub struct GallerySlots {
pub paginator: Adapted<Paginator>,
pub status_bar: Adapted<StatusBar>,
pub button_demo: Adapted<Button>,
- pub label4: Adapted<Label>,
- pub label5: Adapted<Label>,
- pub label6: Adapted<Label>,
- pub label7: Adapted<Label>,
- pub label8: Adapted<Label>,
pub checkbox_demo: Adapted<Checkbox>,
pub toggle_demo: Adapted<Toggle>,
pub progress_demo: Adapted<ProgressBar>,
@@ -38,13 +33,11 @@ pub struct GallerySlots {
pub panel_demo: Adapted<Panel>,
pub create_window_btn: Adapted<Button>,
pub opacity_toggle: Adapted<Toggle>,
- pub label17: Adapted<Label>,
pub transparency_slider: Adapted<Slider>,
pub transparency_label: Adapted<Label>,
pub window_type_dd: Adapted<Dropdown>,
pub window_shape_dd: Adapted<Dropdown>,
pub enable_toggle: Adapted<Toggle>,
- pub label23: Adapted<Label>,
pub width_spin: Adapted<Spinbox>,
pub height_spin: Adapted<Spinbox>,
pub surface_plate: Adapted<Plate>,
@@ -75,7 +68,7 @@ pub struct GallerySlots {
pub layout_dd: Adapted<Dropdown>,
}
-pub const GALLERY_COUNT: usize = 52;
+pub const GALLERY_COUNT: usize = 45;
impl GallerySlots {
@@ -87,54 +80,47 @@ impl GallerySlots {
1 => self.paginator.draggable(),
2 => self.status_bar.draggable(),
3 => self.button_demo.draggable(),
- 4 => self.label4.draggable(),
- 5 => self.label5.draggable(),
- 6 => self.label6.draggable(),
- 7 => self.label7.draggable(),
- 8 => self.label8.draggable(),
- 9 => self.checkbox_demo.draggable(),
- 10 => self.toggle_demo.draggable(),
- 11 => self.progress_demo.draggable(),
- 12 => self.slider_demo.draggable(),
- 13 => self.spinbox_demo.draggable(),
- 14 => self.panel_demo.draggable(),
- 15 => self.create_window_btn.draggable(),
- 16 => self.opacity_toggle.draggable(),
- 17 => self.label17.draggable(),
- 18 => self.transparency_slider.draggable(),
- 19 => self.transparency_label.draggable(),
- 20 => self.window_type_dd.draggable(),
- 21 => self.window_shape_dd.draggable(),
- 22 => self.enable_toggle.draggable(),
- 23 => self.label23.draggable(),
- 24 => self.width_spin.draggable(),
- 25 => self.height_spin.draggable(),
- 26 => self.surface_plate.draggable(),
- 27 => self.surface_info_label.draggable(),
- 28 => self.surface_desc_label.draggable(),
- 29 => self.range_slider_demo.draggable(),
- 30 => self.trackpad_demo.draggable(),
- 31 => self.portal_panel.draggable(),
- 32 => self.portal_label.draggable(),
- 33 => self.open_dialog_btn.draggable(),
- 34 => self.save_dialog_btn.draggable(),
- 35 => self.textbox_demo.draggable(),
- 36 => self.plate_demo.draggable(),
- 37 => self.backplate_toggle.draggable(),
- 38 => self.menubar_toggle.draggable(),
- 39 => self.statusbar_toggle.draggable(),
- 40 => self.border_section.draggable(),
- 41 => self.bevel_toggle.draggable(),
- 42 => self.border_width_spin.draggable(),
- 43 => self.bevel_depth_spin.draggable(),
- 44 => self.elements_section.draggable(),
- 45 => self.page_selector.draggable(),
- 46 => self.color_ramp_btn.draggable(),
- 47 => self.bevel_shape_btn.draggable(),
- 48 => self.bevel_ramp.draggable(),
- 49 => self.ramp_btn.draggable(),
- 50 => self.control_panel.draggable(),
- 51 => self.layout_dd.draggable(),
+ 4 => self.checkbox_demo.draggable(),
+ 5 => self.toggle_demo.draggable(),
+ 6 => self.progress_demo.draggable(),
+ 7 => self.slider_demo.draggable(),
+ 8 => self.spinbox_demo.draggable(),
+ 9 => self.panel_demo.draggable(),
+ 10 => self.create_window_btn.draggable(),
+ 11 => self.opacity_toggle.draggable(),
+ 12 => self.transparency_slider.draggable(),
+ 13 => self.transparency_label.draggable(),
+ 14 => self.window_type_dd.draggable(),
+ 15 => self.window_shape_dd.draggable(),
+ 16 => self.enable_toggle.draggable(),
+ 17 => self.width_spin.draggable(),
+ 18 => self.height_spin.draggable(),
+ 19 => self.surface_plate.draggable(),
+ 20 => self.surface_info_label.draggable(),
+ 21 => self.surface_desc_label.draggable(),
+ 22 => self.range_slider_demo.draggable(),
+ 23 => self.trackpad_demo.draggable(),
+ 24 => self.portal_panel.draggable(),
+ 25 => self.portal_label.draggable(),
+ 26 => self.open_dialog_btn.draggable(),
+ 27 => self.save_dialog_btn.draggable(),
+ 28 => self.textbox_demo.draggable(),
+ 29 => self.plate_demo.draggable(),
+ 30 => self.backplate_toggle.draggable(),
+ 31 => self.menubar_toggle.draggable(),
+ 32 => self.statusbar_toggle.draggable(),
+ 33 => self.border_section.draggable(),
+ 34 => self.bevel_toggle.draggable(),
+ 35 => self.border_width_spin.draggable(),
+ 36 => self.bevel_depth_spin.draggable(),
+ 37 => self.elements_section.draggable(),
+ 38 => self.page_selector.draggable(),
+ 39 => self.color_ramp_btn.draggable(),
+ 40 => self.bevel_shape_btn.draggable(),
+ 41 => self.bevel_ramp.draggable(),
+ 42 => self.ramp_btn.draggable(),
+ 43 => self.control_panel.draggable(),
+ 44 => self.layout_dd.draggable(),
_ => panic!("gallery slot index out of range: {idx}"),
}
}
@@ -145,54 +131,47 @@ impl GallerySlots {
1 => self.paginator.is_dragging(),
2 => self.status_bar.is_dragging(),
3 => self.button_demo.is_dragging(),
- 4 => self.label4.is_dragging(),
- 5 => self.label5.is_dragging(),
- 6 => self.label6.is_dragging(),
- 7 => self.label7.is_dragging(),
- 8 => self.label8.is_dragging(),
- 9 => self.checkbox_demo.is_dragging(),
- 10 => self.toggle_demo.is_dragging(),
- 11 => self.progress_demo.is_dragging(),
- 12 => self.slider_demo.is_dragging(),
- 13 => self.spinbox_demo.is_dragging(),
- 14 => self.panel_demo.is_dragging(),
- 15 => self.create_window_btn.is_dragging(),
- 16 => self.opacity_toggle.is_dragging(),
- 17 => self.label17.is_dragging(),
- 18 => self.transparency_slider.is_dragging(),
- 19 => self.transparency_label.is_dragging(),
- 20 => self.window_type_dd.is_dragging(),
- 21 => self.window_shape_dd.is_dragging(),
- 22 => self.enable_toggle.is_dragging(),
- 23 => self.label23.is_dragging(),
- 24 => self.width_spin.is_dragging(),
- 25 => self.height_spin.is_dragging(),
- 26 => self.surface_plate.is_dragging(),
- 27 => self.surface_info_label.is_dragging(),
- 28 => self.surface_desc_label.is_dragging(),
- 29 => self.range_slider_demo.is_dragging(),
- 30 => self.trackpad_demo.is_dragging(),
- 31 => self.portal_panel.is_dragging(),
- 32 => self.portal_label.is_dragging(),
- 33 => self.open_dialog_btn.is_dragging(),
- 34 => self.save_dialog_btn.is_dragging(),
- 35 => self.textbox_demo.is_dragging(),
- 36 => self.plate_demo.is_dragging(),
- 37 => self.backplate_toggle.is_dragging(),
- 38 => self.menubar_toggle.is_dragging(),
- 39 => self.statusbar_toggle.is_dragging(),
- 40 => self.border_section.is_dragging(),
- 41 => self.bevel_toggle.is_dragging(),
- 42 => self.border_width_spin.is_dragging(),
- 43 => self.bevel_depth_spin.is_dragging(),
- 44 => self.elements_section.is_dragging(),
- 45 => self.page_selector.is_dragging(),
- 46 => self.color_ramp_btn.is_dragging(),
- 47 => self.bevel_shape_btn.is_dragging(),
- 48 => self.bevel_ramp.is_dragging(),
- 49 => self.ramp_btn.is_dragging(),
- 50 => self.control_panel.is_dragging(),
- 51 => self.layout_dd.is_dragging(),
+ 4 => self.checkbox_demo.is_dragging(),
+ 5 => self.toggle_demo.is_dragging(),
+ 6 => self.progress_demo.is_dragging(),
+ 7 => self.slider_demo.is_dragging(),
+ 8 => self.spinbox_demo.is_dragging(),
+ 9 => self.panel_demo.is_dragging(),
+ 10 => self.create_window_btn.is_dragging(),
+ 11 => self.opacity_toggle.is_dragging(),
+ 12 => self.transparency_slider.is_dragging(),
+ 13 => self.transparency_label.is_dragging(),
+ 14 => self.window_type_dd.is_dragging(),
+ 15 => self.window_shape_dd.is_dragging(),
+ 16 => self.enable_toggle.is_dragging(),
+ 17 => self.width_spin.is_dragging(),
+ 18 => self.height_spin.is_dragging(),
+ 19 => self.surface_plate.is_dragging(),
+ 20 => self.surface_info_label.is_dragging(),
+ 21 => self.surface_desc_label.is_dragging(),
+ 22 => self.range_slider_demo.is_dragging(),
+ 23 => self.trackpad_demo.is_dragging(),
+ 24 => self.portal_panel.is_dragging(),
+ 25 => self.portal_label.is_dragging(),
+ 26 => self.open_dialog_btn.is_dragging(),
+ 27 => self.save_dialog_btn.is_dragging(),
+ 28 => self.textbox_demo.is_dragging(),
+ 29 => self.plate_demo.is_dragging(),
+ 30 => self.backplate_toggle.is_dragging(),
+ 31 => self.menubar_toggle.is_dragging(),
+ 32 => self.statusbar_toggle.is_dragging(),
+ 33 => self.border_section.is_dragging(),
+ 34 => self.bevel_toggle.is_dragging(),
+ 35 => self.border_width_spin.is_dragging(),
+ 36 => self.bevel_depth_spin.is_dragging(),
+ 37 => self.elements_section.is_dragging(),
+ 38 => self.page_selector.is_dragging(),
+ 39 => self.color_ramp_btn.is_dragging(),
+ 40 => self.bevel_shape_btn.is_dragging(),
+ 41 => self.bevel_ramp.is_dragging(),
+ 42 => self.ramp_btn.is_dragging(),
+ 43 => self.control_panel.is_dragging(),
+ 44 => self.layout_dd.is_dragging(),
_ => panic!("gallery slot index out of range: {idx}"),
}
}
@@ -203,54 +182,47 @@ impl GallerySlots {
1 => &self.paginator,
2 => &self.status_bar,
3 => &self.button_demo,
- 4 => &self.label4,
- 5 => &self.label5,
- 6 => &self.label6,
- 7 => &self.label7,
- 8 => &self.label8,
- 9 => &self.checkbox_demo,
- 10 => &self.toggle_demo,
- 11 => &self.progress_demo,
- 12 => &self.slider_demo,
- 13 => &self.spinbox_demo,
- 14 => &self.panel_demo,
- 15 => &self.create_window_btn,
- 16 => &self.opacity_toggle,
- 17 => &self.label17,
- 18 => &self.transparency_slider,
- 19 => &self.transparency_label,
- 20 => &self.window_type_dd,
- 21 => &self.window_shape_dd,
- 22 => &self.enable_toggle,
- 23 => &self.label23,
- 24 => &self.width_spin,
- 25 => &self.height_spin,
- 26 => &self.surface_plate,
- 27 => &self.surface_info_label,
- 28 => &self.surface_desc_label,
- 29 => &self.range_slider_demo,
- 30 => &self.trackpad_demo,
- 31 => &self.portal_panel,
- 32 => &self.portal_label,
- 33 => &self.open_dialog_btn,
- 34 => &self.save_dialog_btn,
- 35 => &self.textbox_demo,
- 36 => &self.plate_demo,
- 37 => &self.backplate_toggle,
- 38 => &self.menubar_toggle,
- 39 => &self.statusbar_toggle,
- 40 => &self.border_section,
- 41 => &self.bevel_toggle,
- 42 => &self.border_width_spin,
- 43 => &self.bevel_depth_spin,
- 44 => &self.elements_section,
- 45 => &self.page_selector,
- 46 => &self.color_ramp_btn,
- 47 => &self.bevel_shape_btn,
- 48 => &self.bevel_ramp,
- 49 => &self.ramp_btn,
- 50 => &self.control_panel,
- 51 => &self.layout_dd,
+ 4 => &self.checkbox_demo,
+ 5 => &self.toggle_demo,
+ 6 => &self.progress_demo,
+ 7 => &self.slider_demo,
+ 8 => &self.spinbox_demo,
+ 9 => &self.panel_demo,
+ 10 => &self.create_window_btn,
+ 11 => &self.opacity_toggle,
+ 12 => &self.transparency_slider,
+ 13 => &self.transparency_label,
+ 14 => &self.window_type_dd,
+ 15 => &self.window_shape_dd,
+ 16 => &self.enable_toggle,
+ 17 => &self.width_spin,
+ 18 => &self.height_spin,
+ 19 => &self.surface_plate,
+ 20 => &self.surface_info_label,
+ 21 => &self.surface_desc_label,
+ 22 => &self.range_slider_demo,
+ 23 => &self.trackpad_demo,
+ 24 => &self.portal_panel,
+ 25 => &self.portal_label,
+ 26 => &self.open_dialog_btn,
+ 27 => &self.save_dialog_btn,
+ 28 => &self.textbox_demo,
+ 29 => &self.plate_demo,
+ 30 => &self.backplate_toggle,
+ 31 => &self.menubar_toggle,
+ 32 => &self.statusbar_toggle,
+ 33 => &self.border_section,
+ 34 => &self.bevel_toggle,
+ 35 => &self.border_width_spin,
+ 36 => &self.bevel_depth_spin,
+ 37 => &self.elements_section,
+ 38 => &self.page_selector,
+ 39 => &self.color_ramp_btn,
+ 40 => &self.bevel_shape_btn,
+ 41 => &self.bevel_ramp,
+ 42 => &self.ramp_btn,
+ 43 => &self.control_panel,
+ 44 => &self.layout_dd,
_ => panic!("gallery slot index out of range: {idx}"),
}
}
@@ -261,54 +233,47 @@ impl GallerySlots {
1 => &mut self.paginator,
2 => &mut self.status_bar,
3 => &mut self.button_demo,
- 4 => &mut self.label4,
- 5 => &mut self.label5,
- 6 => &mut self.label6,
- 7 => &mut self.label7,
- 8 => &mut self.label8,
- 9 => &mut self.checkbox_demo,
- 10 => &mut self.toggle_demo,
- 11 => &mut self.progress_demo,
- 12 => &mut self.slider_demo,
- 13 => &mut self.spinbox_demo,
- 14 => &mut self.panel_demo,
- 15 => &mut self.create_window_btn,
- 16 => &mut self.opacity_toggle,
- 17 => &mut self.label17,
- 18 => &mut self.transparency_slider,
- 19 => &mut self.transparency_label,
- 20 => &mut self.window_type_dd,
- 21 => &mut self.window_shape_dd,
- 22 => &mut self.enable_toggle,
- 23 => &mut self.label23,
- 24 => &mut self.width_spin,
- 25 => &mut self.height_spin,
- 26 => &mut self.surface_plate,
- 27 => &mut self.surface_info_label,
- 28 => &mut self.surface_desc_label,
- 29 => &mut self.range_slider_demo,
- 30 => &mut self.trackpad_demo,
- 31 => &mut self.portal_panel,
- 32 => &mut self.portal_label,
- 33 => &mut self.open_dialog_btn,
- 34 => &mut self.save_dialog_btn,
- 35 => &mut self.textbox_demo,
- 36 => &mut self.plate_demo,
- 37 => &mut self.backplate_toggle,
- 38 => &mut self.menubar_toggle,
- 39 => &mut self.statusbar_toggle,
- 40 => &mut self.border_section,
- 41 => &mut self.bevel_toggle,
- 42 => &mut self.border_width_spin,
- 43 => &mut self.bevel_depth_spin,
- 44 => &mut self.elements_section,
- 45 => &mut self.page_selector,
- 46 => &mut self.color_ramp_btn,
- 47 => &mut self.bevel_shape_btn,
- 48 => &mut self.bevel_ramp,
- 49 => &mut self.ramp_btn,
- 50 => &mut self.control_panel,
- 51 => &mut self.layout_dd,
+ 4 => &mut self.checkbox_demo,
+ 5 => &mut self.toggle_demo,
+ 6 => &mut self.progress_demo,
+ 7 => &mut self.slider_demo,
+ 8 => &mut self.spinbox_demo,
+ 9 => &mut self.panel_demo,
+ 10 => &mut self.create_window_btn,
+ 11 => &mut self.opacity_toggle,
+ 12 => &mut self.transparency_slider,
+ 13 => &mut self.transparency_label,
+ 14 => &mut self.window_type_dd,
+ 15 => &mut self.window_shape_dd,
+ 16 => &mut self.enable_toggle,
+ 17 => &mut self.width_spin,
+ 18 => &mut self.height_spin,
+ 19 => &mut self.surface_plate,
+ 20 => &mut self.surface_info_label,
+ 21 => &mut self.surface_desc_label,
+ 22 => &mut self.range_slider_demo,
+ 23 => &mut self.trackpad_demo,
+ 24 => &mut self.portal_panel,
+ 25 => &mut self.portal_label,
+ 26 => &mut self.open_dialog_btn,
+ 27 => &mut self.save_dialog_btn,
+ 28 => &mut self.textbox_demo,
+ 29 => &mut self.plate_demo,
+ 30 => &mut self.backplate_toggle,
+ 31 => &mut self.menubar_toggle,
+ 32 => &mut self.statusbar_toggle,
+ 33 => &mut self.border_section,
+ 34 => &mut self.bevel_toggle,
+ 35 => &mut self.border_width_spin,
+ 36 => &mut self.bevel_depth_spin,
+ 37 => &mut self.elements_section,
+ 38 => &mut self.page_selector,
+ 39 => &mut self.color_ramp_btn,
+ 40 => &mut self.bevel_shape_btn,
+ 41 => &mut self.bevel_ramp,
+ 42 => &mut self.ramp_btn,
+ 43 => &mut self.control_panel,
+ 44 => &mut self.layout_dd,
_ => panic!("gallery slot index out of range: {idx}"),
}
}
@@ -514,35 +479,35 @@ impl Roster {
match idx {
2 => s.status_bar.take_click(),
3 => s.button_demo.take_click(),
- 9 => s.checkbox_demo.take_click(),
- 10 => s.toggle_demo.take_click(),
- 12 => s.slider_demo.take_click(),
- 13 => s.spinbox_demo.take_click(),
- 15 => s.create_window_btn.take_click(),
- 16 => s.opacity_toggle.take_click(),
- 18 => s.transparency_slider.take_click(),
- 20 => s.window_type_dd.take_click(),
- 21 => s.window_shape_dd.take_click(),
- 22 => s.enable_toggle.take_click(),
- 24 => s.width_spin.take_click(),
- 25 => s.height_spin.take_click(),
- 29 => s.range_slider_demo.take_click(),
- 30 => s.trackpad_demo.take_click(),
- 33 => s.open_dialog_btn.take_click(),
- 34 => s.save_dialog_btn.take_click(),
- 35 => s.textbox_demo.take_click(),
- 36 => s.plate_demo.take_click(),
- 37 => s.backplate_toggle.take_click(),
- 38 => s.menubar_toggle.take_click(),
- 39 => s.statusbar_toggle.take_click(),
- 41 => s.bevel_toggle.take_click(),
- 42 => s.border_width_spin.take_click(),
- 43 => s.bevel_depth_spin.take_click(),
- 45 => s.page_selector.take_click(),
- 46 => s.color_ramp_btn.take_click(),
- 47 => s.bevel_shape_btn.take_click(),
- 49 => s.ramp_btn.take_click(),
- 51 => s.layout_dd.take_click(),
+ 4 => s.checkbox_demo.take_click(),
+ 5 => s.toggle_demo.take_click(),
+ 7 => s.slider_demo.take_click(),
+ 8 => s.spinbox_demo.take_click(),
+ 10 => s.create_window_btn.take_click(),
+ 11 => s.opacity_toggle.take_click(),
+ 12 => s.transparency_slider.take_click(),
+ 14 => s.window_type_dd.take_click(),
+ 15 => s.window_shape_dd.take_click(),
+ 16 => s.enable_toggle.take_click(),
+ 17 => s.width_spin.take_click(),
+ 18 => s.height_spin.take_click(),
+ 22 => s.range_slider_demo.take_click(),
+ 23 => s.trackpad_demo.take_click(),
+ 26 => s.open_dialog_btn.take_click(),
+ 27 => s.save_dialog_btn.take_click(),
+ 28 => s.textbox_demo.take_click(),
+ 29 => s.plate_demo.take_click(),
+ 30 => s.backplate_toggle.take_click(),
+ 31 => s.menubar_toggle.take_click(),
+ 32 => s.statusbar_toggle.take_click(),
+ 34 => s.bevel_toggle.take_click(),
+ 35 => s.border_width_spin.take_click(),
+ 36 => s.bevel_depth_spin.take_click(),
+ 38 => s.page_selector.take_click(),
+ 39 => s.color_ramp_btn.take_click(),
+ 40 => s.bevel_shape_btn.take_click(),
+ 42 => s.ramp_btn.take_click(),
+ 44 => s.layout_dd.take_click(),
_ => panic!("take_click: unwired gallery slot {idx}"),
}
}
@@ -550,15 +515,15 @@ impl Roster {
pub fn value(&self, idx: usize) -> i32 {
let s = self.gallery();
match idx {
- 18 => s.transparency_slider.value(),
- 20 => s.window_type_dd.value(),
- 21 => s.window_shape_dd.value(),
- 24 => s.width_spin.value(),
- 25 => s.height_spin.value(),
- 42 => s.border_width_spin.value(),
- 43 => s.bevel_depth_spin.value(),
- 45 => s.page_selector.value(),
- 51 => s.layout_dd.value(),
+ 12 => s.transparency_slider.value(),
+ 14 => s.window_type_dd.value(),
+ 15 => s.window_shape_dd.value(),
+ 17 => s.width_spin.value(),
+ 18 => s.height_spin.value(),
+ 35 => s.border_width_spin.value(),
+ 36 => s.bevel_depth_spin.value(),
+ 38 => s.page_selector.value(),
+ 44 => s.layout_dd.value(),
_ => panic!("value: unwired gallery slot {idx}"),
}
}
@@ -566,12 +531,12 @@ impl Roster {
pub fn get_value_string(&self, idx: usize) -> Option<String> {
let s = self.gallery();
match idx {
- 16 => s.opacity_toggle.get_value_string(),
- 22 => s.enable_toggle.get_value_string(),
- 37 => s.backplate_toggle.get_value_string(),
- 38 => s.menubar_toggle.get_value_string(),
- 39 => s.statusbar_toggle.get_value_string(),
- 41 => s.bevel_toggle.get_value_string(),
+ 11 => s.opacity_toggle.get_value_string(),
+ 16 => s.enable_toggle.get_value_string(),
+ 30 => s.backplate_toggle.get_value_string(),
+ 31 => s.menubar_toggle.get_value_string(),
+ 32 => s.statusbar_toggle.get_value_string(),
+ 34 => s.bevel_toggle.get_value_string(),
_ => panic!("get_value_string: unwired gallery slot {idx}"),
}
}
@@ -579,7 +544,7 @@ impl Roster {
pub fn set_text(&mut self, idx: usize, text: &str) {
let s = self.gallery_mut();
match idx {
- 28 => s.surface_desc_label.set_text(text),
+ 21 => s.surface_desc_label.set_text(text),
_ => panic!("set_text: unwired gallery slot {idx}"),
}
}
@@ -756,13 +721,13 @@ fn push_bevel_slice_corners(
}
fn is_control_panel_child(i: usize) -> bool {
- matches!(i, 15..=25 | 37..=44 | 47)
+ matches!(i, 10..=18 | 30..=37 | 40)
}
/// The panel's child slots in the legacy arrangement/aggregation order (the ControlPanel
/// endgame: the panel no longer stores pointers to them — the app lays them out, emits
/// them clamped to the panel viewport, and dispatches them as ordinary routed roots).
-const CP_CHILDREN: [usize; 18] = [15, 20, 21, 16, 18, 19, 22, 24, 25, 37, 38, 39, 40, 41, 42, 43, 44, 47];
+const CP_CHILDREN: [usize; 18] = [10, 14, 15, 11, 12, 13, 16, 17, 18, 30, 31, 32, 33, 34, 35, 36, 37, 40];
impl State {
/// The dissolved panel's hit gate: pointer events reach the panel's children only
@@ -814,10 +779,10 @@ impl State {
};
}
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => self.current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => self.current_page == Page::Windows,
- 31..=34 => self.current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => self.current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => self.current_page == Page::Windows,
+ 24..=27 => self.current_page == Page::Xdg,
_ => false,
}
}
@@ -852,7 +817,7 @@ impl State {
}
let widget = self.roster.get_dyn_mut(i);
- if !self.is_child && i == 45 {
+ if !self.is_child && i == 38 {
continue;
}
@@ -865,7 +830,7 @@ impl State {
if visible {
let (x, y, w, h) = pos;
let mut final_h = h;
- if i != 0 && i != 1 && i != 2 && i != 50 {
+ if i != 0 && i != 1 && i != 2 && i != 43 {
if y + h > limit_y {
final_h = (limit_y - y).max(0.0);
}
@@ -878,8 +843,8 @@ impl State {
}
if !self.is_child {
- let (x, y, w, h) = self.positions[50];
- self.roster.get_dyn_mut(50).set_rect(x, y, w, h);
+ let (x, y, w, h) = self.positions[43];
+ self.roster.get_dyn_mut(43).set_rect(x, y, w, h);
let sb_rect = self.roster.get_dyn_mut(2).rect();
let ddh = cce_ui::layout::dropdown_height();
@@ -888,7 +853,7 @@ impl State {
let dw = 120.0;
let dx = sb_rect.0 + sb_rect.2 - dw - pad_x;
let dy = sb_rect.1 + pad_y;
- self.roster.get_dyn_mut(45).set_rect(dx, dy, dw, ddh);
+ self.roster.get_dyn_mut(38).set_rect(dx, dy, dw, ddh);
self.arrange_control_panel();
}
@@ -1087,11 +1052,6 @@ impl cce_ui::engine::Application for State {
},
status_bar: StatusBar::new(),
button_demo: Button::new(0.0, 0.0, 140.0, 40.0).with_label("Button"),
- label4: Label::new("").with_font_size(12.0),
- label5: Label::new("").with_font_size(12.0),
- label6: Label::new("").with_font_size(12.0),
- label7: Label::new("").with_font_size(12.0),
- label8: Label::new("").with_font_size(12.0),
checkbox_demo: Checkbox::new().with_label("Checkbox"),
toggle_demo: Toggle::new().with_label("Toggle"),
progress_demo: ProgressBar::new(0.43).with_label("ProgressBar"),
@@ -1100,7 +1060,6 @@ impl cce_ui::engine::Application for State {
panel_demo: Panel::new(0.0, 0.0, 400.0, 250.0),
create_window_btn: Button::new(0.0, 0.0, 140.0, 40.0).with_label("Create Window"),
opacity_toggle: Toggle::new().with_label("Opacity"),
- label17: Label::new("").with_font_size(12.0),
transparency_slider: Slider::new(),
transparency_label: Label::new("Transparency Level").with_font_size(12.0).with_color([0xcc, 0xcc, 0xd4]),
window_type_dd: Dropdown::new(vec![
@@ -1119,7 +1078,6 @@ impl cce_ui::engine::Application for State {
t.set_toggled(true);
t
},
- label23: Label::new("").with_font_size(12.0),
width_spin: Spinbox::new(400, 100, 2000, 10).with_label("Width"),
height_spin: Spinbox::new(250, 100, 2000, 10).with_label("Height"),
surface_plate: Plate::new(0.0, 0.0, 190.0, 250.0, true),
@@ -1232,10 +1190,10 @@ cascades in cce."
};
if !is_child {
- // Link page selector (45) under StatusBar (2) — the old set_parent + add_child
+ // Link page selector (38) under StatusBar (2) — the old set_parent + add_child
// pair as the one tree link it always was (6bd batch 4).
let statusbar_ptr = state.roster.get_dyn_mut(2) as *mut (dyn WidgetHost + 'static);
- let dropdown_ptr = state.roster.get_dyn_mut(45) as *mut (dyn WidgetHost + 'static);
+ let dropdown_ptr = state.roster.get_dyn_mut(38) as *mut (dyn WidgetHost + 'static);
unsafe {
cce_ui::widget::focus::link_parent_child(
&mut *statusbar_ptr,
@@ -1351,10 +1309,10 @@ cascades in cce."
}
} else {
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => current_page == Page::Windows,
- 31..=34 => current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => current_page == Page::Windows,
+ 24..=27 => current_page == Page::Xdg,
_ => false,
}
}
@@ -1443,12 +1401,12 @@ cascades in cce."
if is_control_panel_child(i) {
continue;
}
- if !self.is_child && i == 14 {
+ if !self.is_child && i == 9 {
let r = cce_ui::color::root_plate_corner_radius();
- let backplate_enabled = self.roster.get_value_string(37) == Some("true".to_string());
- let border_bevel = self.roster.get_value_string(41) == Some("true".to_string());
- let opacity_enabled = self.roster.get_value_string(16) == Some("true".to_string());
- let transparency_val = if opacity_enabled { self.roster.value(18) as f32 / 100.0 } else { 1.0 };
+ let backplate_enabled = self.roster.get_value_string(30) == Some("true".to_string());
+ let border_bevel = self.roster.get_value_string(34) == Some("true".to_string());
+ let opacity_enabled = self.roster.get_value_string(11) == Some("true".to_string());
+ let transparency_val = if opacity_enabled { self.roster.value(12) as f32 / 100.0 } else { 1.0 };
let bg_color = if backplate_enabled {
let mut col = cce_ui::color::page_low_color();
col[3] = transparency_val;
@@ -1460,7 +1418,7 @@ cascades in cce."
let (wx, wy, ww, wh) = w.rect();
if backplate_enabled {
if border_bevel {
- let t = self.roster.value(42) as f32;
+ let t = self.roster.value(35) as f32;
let r_inner = (r - t).max(0.0);
push_rounded(&mut pc, wx + t, wy + t, ww - 2.0 * t, wh - 2.0 * t, r_inner, bg_color, (true, true, true, true));
} else {
@@ -1468,7 +1426,7 @@ cascades in cce."
}
}
- let menubar_enabled = self.roster.get_value_string(38) == Some("true".to_string());
+ let menubar_enabled = self.roster.get_value_string(31) == Some("true".to_string());
if menubar_enabled {
let mut menu_color = cce_ui::color::root_plate_menubar_color();
menu_color[3] = transparency_val;
@@ -1479,7 +1437,7 @@ cascades in cce."
}
}
- let statusbar_enabled = self.roster.get_value_string(39) == Some("true".to_string());
+ let statusbar_enabled = self.roster.get_value_string(32) == Some("true".to_string());
if statusbar_enabled {
let mut status_color = cce_ui::color::root_plate_statusbar_color();
status_color[3] = transparency_val;
@@ -1586,10 +1544,10 @@ cascades in cce."
if is_control_panel_child(i) {
continue;
}
- if !self.is_child && i == 14 {
- let backplate_enabled = self.roster.get_value_string(37) == Some("true".to_string());
- let opacity_enabled = self.roster.get_value_string(16) == Some("true".to_string());
- let transparency_val = if opacity_enabled { self.roster.value(18) as f32 / 100.0 } else { 1.0 };
+ if !self.is_child && i == 9 {
+ let backplate_enabled = self.roster.get_value_string(30) == Some("true".to_string());
+ let opacity_enabled = self.roster.get_value_string(11) == Some("true".to_string());
+ let transparency_val = if opacity_enabled { self.roster.value(12) as f32 / 100.0 } else { 1.0 };
let bg_color = if backplate_enabled {
let mut col = cce_ui::color::page_low_color();
col[3] = transparency_val;
@@ -1782,12 +1740,12 @@ cascades in cce."
continue;
}
- if !self.is_child && i == 14 {
- let border_enabled = self.roster.get_value_string(22) == Some("true".to_string());
+ if !self.is_child && i == 9 {
+ let border_enabled = self.roster.get_value_string(16) == Some("true".to_string());
if border_enabled {
- let backplate_enabled = self.roster.get_value_string(37) == Some("true".to_string());
- let opacity_enabled = self.roster.get_value_string(16) == Some("true".to_string());
- let transparency_val = if opacity_enabled { self.roster.value(18) as f32 / 100.0 } else { 1.0 };
+ let backplate_enabled = self.roster.get_value_string(30) == Some("true".to_string());
+ let opacity_enabled = self.roster.get_value_string(11) == Some("true".to_string());
+ let transparency_val = if opacity_enabled { self.roster.value(12) as f32 / 100.0 } else { 1.0 };
let bg_color = if backplate_enabled {
let mut col = cce_ui::color::page_low_color();
col[3] = transparency_val;
@@ -1798,8 +1756,8 @@ cascades in cce."
let mut border_color = cce_ui::color::plate_border_color().unwrap_or([0.3, 0.3, 0.4, 1.0]);
border_color[3] = transparency_val;
- let t = self.roster.value(42) as f32;
- let border_bevel = self.roster.get_value_string(41) == Some("true".to_string());
+ let t = self.roster.value(35) as f32;
+ let border_bevel = self.roster.get_value_string(34) == Some("true".to_string());
let r = cce_ui::color::root_plate_corner_radius();
let (wx, wy, ww, wh) = w.rect();
@@ -1816,7 +1774,7 @@ cascades in cce."
let h_inner = interpolate_ramp_value(&self.bevel_ramp, u_next, &self.bevel_ramp_line_type);
let d_h = h_inner - h_outer;
- let bevel_depth = self.roster.value(43) as f32 / 100.0;
+ let bevel_depth = self.roster.value(36) as f32 / 100.0;
let color_offset = d_h * bevel_depth * 2.667;
let rad = cce_ui::layout::light_source_position();
@@ -1918,10 +1876,10 @@ cascades in cce."
}
} else {
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => current_page == Page::Windows,
- 31..=34 => current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => current_page == Page::Windows,
+ 24..=27 => current_page == Page::Xdg,
_ => false,
}
}
@@ -1964,10 +1922,10 @@ cascades in cce."
}
} else {
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => current_page == Page::Windows,
- 31..=34 => current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => current_page == Page::Windows,
+ 24..=27 => current_page == Page::Xdg,
_ => false,
}
}
@@ -2057,8 +2015,8 @@ cascades in cce."
} else {
let mut page_changed = false;
let mut selected = 0;
- if self.roster.take_click(45) {
- selected = self.roster.value(45);
+ if self.roster.take_click(38) {
+ selected = self.roster.value(38);
page_changed = true;
}
@@ -2075,15 +2033,15 @@ cascades in cce."
}
self.apply_layout();
changed = true;
- } else if self.roster.take_click(51) {
- self.layout_idx = self.roster.value(51) as usize;
+ } else if self.roster.take_click(44) {
+ self.layout_idx = self.roster.value(44) as usize;
self.positions = demo_positions(self.width, self.height, cce_ui::widget::PageSelector::sidebar_w(self.roster.gallery().paginator.as_any().downcast_ref::<cce_ui::widget::Paginator>().expect("slot 1 must be the Paginator")), self.layout_idx, self.roster.gallery());
self.apply_layout();
changed = true;
} else if self.current_page == Page::Controls {
if self.roster.take_click(3) {
// Does nothing
- } else if self.roster.take_click(46) {
+ } else if self.roster.take_click(39) {
if let Ok(exe) = std::env::current_exe() {
let mut cmd = std::process::Command::new(exe);
cmd.arg("--child")
@@ -2096,7 +2054,7 @@ cascades in cce."
.arg("--backplate");
let _ = cmd.spawn();
}
- } else if self.roster.take_click(49) {
+ } else if self.roster.take_click(42) {
if let Ok(exe) = std::env::current_exe() {
let mut cmd = std::process::Command::new(exe);
cmd.arg("--child")
@@ -2110,7 +2068,7 @@ cascades in cce."
let _ = cmd.spawn();
}
} else {
- for i in [9, 10, 12, 13, 29, 30, 35, 36] {
+ for i in [4, 5, 7, 8, 22, 23, 28, 29] {
if self.roster.take_click(i) {
changed = true;
}
@@ -2119,9 +2077,9 @@ cascades in cce."
} else if self.current_page == Page::Windows {
let mut create_window = false;
- if self.roster.take_click(15) {
+ if self.roster.take_click(10) {
create_window = true;
- } else if self.roster.take_click(47) {
+ } else if self.roster.take_click(40) {
if let Ok(exe) = std::env::current_exe() {
let mut cmd = std::process::Command::new(exe);
cmd.arg("--child")
@@ -2136,14 +2094,14 @@ cascades in cce."
}
} else {
let mut dropdown_clicked = false;
- for i in [16, 18, 20, 21, 22, 24, 25, 37, 38, 39, 41, 42, 43] {
+ for i in [11, 12, 14, 15, 16, 17, 18, 30, 31, 32, 34, 35, 36] {
if self.roster.take_click(i) {
changed = true;
- if i == 20 {
+ if i == 14 {
dropdown_clicked = true;
}
- if i == 43 {
- let depth = self.roster.value(43) as f32 / 100.0;
+ if i == 36 {
+ let depth = self.roster.value(36) as f32 / 100.0;
if let Ok(mut registry) = cce_ui::layout::get_style_registry().write() {
registry.set_float("bevel_depth", depth);
}
@@ -2151,7 +2109,7 @@ cascades in cce."
}
}
if dropdown_clicked {
- let desc = match self.roster.value(20) {
+ let desc = match self.roster.value(14) {
0 => "A standard application\n\
window (xdg_toplevel).\n\
It supports tiling (cascade,\n\
@@ -2189,12 +2147,12 @@ Testing layout:\n\
full screen background.",
_ => "",
};
- self.roster.set_text(28, desc);
+ self.roster.set_text(21, desc);
}
}
if create_window {
- let window_type = match self.roster.value(20) {
+ let window_type = match self.roster.value(14) {
0 => "Toplevel",
1 => "Popup",
2 => "LayerTop",
@@ -2202,17 +2160,17 @@ full screen background.",
4 => "LayerBackground",
_ => "Toplevel",
};
- let shape = match self.roster.value(21) {
+ let shape = match self.roster.value(15) {
0 => "rectangular",
1 => "circular",
_ => "rectangular",
};
- let opacity_enabled = self.roster.get_value_string(16) == Some("true".to_string());
- let transparency_pct = self.roster.value(18);
+ let opacity_enabled = self.roster.get_value_string(11) == Some("true".to_string());
+ let transparency_pct = self.roster.value(12);
let transparency_val = transparency_pct as f32 / 100.0;
- let border_enabled = self.roster.get_value_string(22) == Some("true".to_string());
- let custom_width = self.roster.value(24);
- let custom_height = self.roster.value(25);
+ let border_enabled = self.roster.get_value_string(16) == Some("true".to_string());
+ let custom_width = self.roster.value(17);
+ let custom_height = self.roster.value(18);
self.update_status_text(&format!("Spawning simulated {} {} window...", shape, window_type));
if let Ok(exe) = std::env::current_exe() {
@@ -2222,9 +2180,9 @@ full screen background.",
.arg(window_type)
.arg("--shape")
.arg(shape);
- let backplate_enabled = self.roster.get_value_string(37) == Some("true".to_string());
- let menubar_enabled = self.roster.get_value_string(38) == Some("true".to_string());
- let statusbar_enabled = self.roster.get_value_string(39) == Some("true".to_string());
+ let backplate_enabled = self.roster.get_value_string(30) == Some("true".to_string());
+ let menubar_enabled = self.roster.get_value_string(31) == Some("true".to_string());
+ let statusbar_enabled = self.roster.get_value_string(32) == Some("true".to_string());
if opacity_enabled {
cmd.arg("--opacity")
.arg("--transparency")
@@ -2233,8 +2191,8 @@ full screen background.",
if !border_enabled {
cmd.arg("--no-border");
} else {
- let border_width = self.roster.value(42) as f32;
- let border_bevel = self.roster.get_value_string(41) == Some("true".to_string());
+ let border_width = self.roster.value(35) as f32;
+ let border_bevel = self.roster.get_value_string(34) == Some("true".to_string());
cmd.arg("--border-width")
.arg(border_width.to_string());
if border_bevel {
@@ -2261,9 +2219,9 @@ full screen background.",
} else if self.current_page == Page::Xdg {
let mut open_file = false;
let mut save_file = false;
- if self.roster.take_click(33) {
+ if self.roster.take_click(26) {
open_file = true;
- } else if self.roster.take_click(34) {
+ } else if self.roster.take_click(27) {
save_file = true;
}
@@ -2310,10 +2268,10 @@ full screen background.",
}
} else {
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => current_page == Page::Windows,
- 31..=34 => current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => current_page == Page::Windows,
+ 24..=27 => current_page == Page::Xdg,
_ => false,
}
}
@@ -2322,8 +2280,8 @@ full screen background.",
// Panel scroll first (legacy: the panel's scroll frame consumed the wheel before
// its children saw it); a consumed wheel never reaches the panel's children.
let mut cp_took_wheel = false;
- if !self.is_child && is_visible(50) {
- let root = self.roster.get_dyn(50).base().id();
+ if !self.is_child && is_visible(43) {
+ let root = self.roster.get_dyn(43).base().id();
if self.ui_context.propagate_event(&ev, root) {
changed = true;
cp_took_wheel = true;
@@ -2331,7 +2289,7 @@ full screen background.",
}
let cp_wheel_ok = !self.is_child && self.cp_gate(lx, ly);
for i in 0..self.roster.len() {
- if i == 50 {
+ if i == 43 {
continue;
}
if !is_visible(i) {
@@ -2366,10 +2324,10 @@ full screen background.",
}
} else {
match index {
- 0..=2 | 45 => true,
- 3..=13 | 29 | 30 | 35 | 36 | 46 | 48 | 49 | 51 => current_page == Page::Controls,
- 14..=28 | 37..=44 | 47 | 50 => current_page == Page::Windows,
- 31..=34 => current_page == Page::Xdg,
+ 0..=2 | 38 => true,
+ 3..=8 | 22 | 23 | 28 | 29 | 39 | 41 | 42 | 44 => current_page == Page::Controls,
+ 9..=21 | 30..=37 | 40 | 43 => current_page == Page::Windows,
+ 24..=27 => current_page == Page::Xdg,
_ => false,
}
}
@@ -2472,7 +2430,7 @@ fn demo_positions(sw: f32, sh: f32, sidebar_w: f32, layout_idx: usize, slots: &G
let bh = cce_ui::layout::button_height();
let ddh = cce_ui::layout::dropdown_height();
- let mut vec = vec![(0.0, 0.0, 0.0, 0.0); 52];
+ let mut vec = vec![(0.0, 0.0, 0.0, 0.0); 45];
// Common layout elements
vec[0] = (0.0, 0.0, sw, 40.0); // 0 MenuBar
@@ -2480,40 +2438,38 @@ fn demo_positions(sw: f32, sh: f32, sidebar_w: f32, layout_idx: usize, slots: &G
vec[2] = (0.0, sh - 24.0, sw, 24.0); // 2 StatusBar
// Page 1 (Windows)
- vec[14] = (base_x, 60.0, 400.0, 250.0); // 14 Panel (Window simulation area)
- vec[15] = (base_x + 420.0, 60.0, 140.0, bh); // 15 Button (Create Window)
- vec[16] = (base_x + 420.0, 160.0, 140.0, tgh); // 16 Toggle (Opacity)
- vec[17] = (-1000.0, -1000.0, 0.0, 0.0); // 17
- vec[18] = (base_x + 420.0, 210.0, 140.0, slh); // 18 Slider
- vec[19] = (base_x + 420.0, 250.0, 140.0, 20.0); // 19 Label
- vec[20] = (base_x + 580.0, 60.0, 180.0, ddh); // 20 Dropdown (Window Type)
- vec[21] = (base_x + 580.0, 115.0, 180.0, ddh); // 21 Dropdown (Window Shape)
- vec[22] = (base_x + 580.0, 170.0, 120.0, tgh); // 22 Toggle (Enable)
- vec[23] = (-1000.0, -1000.0, 0.0, 0.0); // 23
- vec[24] = (base_x + 580.0, 210.0, 140.0, sph); // 24 Spinbox (Width)
- vec[25] = (base_x + 580.0, 255.0, 140.0, sph); // 25 Spinbox (Height)
- vec[26] = (base_x, 320.0, 190.0, 250.0); // 26 Plate
- vec[27] = (base_x + 10.0, 330.0, 170.0, 20.0); // 27 Label
- vec[28] = (base_x + 10.0, 360.0, 170.0, 180.0); // 28 Label
+ vec[9] = (base_x, 60.0, 400.0, 250.0); // 9 Panel (Window simulation area)
+ vec[10] = (base_x + 420.0, 60.0, 140.0, bh); // 10 Button (Create Window)
+ vec[11] = (base_x + 420.0, 160.0, 140.0, tgh); // 11 Toggle (Opacity)
+ vec[12] = (base_x + 420.0, 210.0, 140.0, slh); // 12 Slider
+ vec[13] = (base_x + 420.0, 250.0, 140.0, 20.0); // 13 Label
+ vec[14] = (base_x + 580.0, 60.0, 180.0, ddh); // 14 Dropdown (Window Type)
+ vec[15] = (base_x + 580.0, 115.0, 180.0, ddh); // 15 Dropdown (Window Shape)
+ vec[16] = (base_x + 580.0, 170.0, 120.0, tgh); // 16 Toggle (Enable)
+ vec[17] = (base_x + 580.0, 210.0, 140.0, sph); // 17 Spinbox (Width)
+ vec[18] = (base_x + 580.0, 255.0, 140.0, sph); // 18 Spinbox (Height)
+ vec[19] = (base_x, 320.0, 190.0, 250.0); // 19 Plate
+ vec[20] = (base_x + 10.0, 330.0, 170.0, 20.0); // 20 Label
+ vec[21] = (base_x + 10.0, 360.0, 170.0, 180.0); // 21 Label
// Page 2 (XDG FileChooser)
- vec[31] = (base_x, 60.0, 450.0, 200.0); // 31 Panel
- vec[32] = (base_x + 20.0, 80.0, 410.0, 60.0); // 32 Label
- vec[33] = (base_x + 20.0, 160.0, 180.0, bh); // 33 Button
- vec[34] = (base_x + 220.0, 160.0, 180.0, bh); // 34 Button
+ vec[24] = (base_x, 60.0, 450.0, 200.0); // 24 Panel
+ vec[25] = (base_x + 20.0, 80.0, 410.0, 60.0); // 25 Label
+ vec[26] = (base_x + 20.0, 160.0, 180.0, bh); // 26 Button
+ vec[27] = (base_x + 220.0, 160.0, 180.0, bh); // 27 Button
// Window Simulation options (visible when Page::Windows is active)
- vec[37] = (base_x + 420.0, 300.0, 140.0, tgh); // 37 Toggle: Backplate
- vec[38] = (base_x + 420.0, 340.0, 140.0, tgh); // 38 Toggle: MenuBar
- vec[39] = (base_x + 420.0, 380.0, 140.0, tgh); // 39 Toggle: StatusBar
- vec[40] = (base_x + 420.0, 420.0, 140.0, 20.0); // 40 SectionContainer: Border
- vec[41] = (base_x + 420.0, 450.0, 140.0, tgh); // 41 Toggle: Bevel
- vec[42] = (base_x + 420.0, 490.0, 140.0, sph); // 42 Spinbox: Border Width
- vec[43] = (base_x + 420.0, 535.0, 140.0, sph); // 43 Spinbox: Bevel Depth
- vec[44] = (base_x + 420.0, 270.0, 140.0, 20.0); // 44 SectionContainer: Window Elements
- vec[45] = (sw - 140.0, sh - 14.0 - ddh / 2.0, 120.0, ddh); // 45 Dropdown: Page selector
- vec[47] = (base_x + 420.0, 580.0, 140.0, bh); // 47 Button: Bevel Shape
- vec[50] = (sw - 270.0, 60.0, 250.0, sh - 100.0); // 50 ControlPanel
+ vec[30] = (base_x + 420.0, 300.0, 140.0, tgh); // 30 Toggle: Backplate
+ vec[31] = (base_x + 420.0, 340.0, 140.0, tgh); // 31 Toggle: MenuBar
+ vec[32] = (base_x + 420.0, 380.0, 140.0, tgh); // 32 Toggle: StatusBar
+ vec[33] = (base_x + 420.0, 420.0, 140.0, 20.0); // 33 SectionContainer: Border
+ vec[34] = (base_x + 420.0, 450.0, 140.0, tgh); // 34 Toggle: Bevel
+ vec[35] = (base_x + 420.0, 490.0, 140.0, sph); // 35 Spinbox: Border Width
+ vec[36] = (base_x + 420.0, 535.0, 140.0, sph); // 36 Spinbox: Bevel Depth
+ vec[37] = (base_x + 420.0, 270.0, 140.0, 20.0); // 37 SectionContainer: Window Elements
+ vec[38] = (sw - 140.0, sh - 14.0 - ddh / 2.0, 120.0, ddh); // 38 Dropdown: Page selector
+ vec[40] = (base_x + 420.0, 580.0, 140.0, bh); // 40 Button: Bevel Shape
+ vec[43] = (sw - 270.0, 60.0, 250.0, sh - 100.0); // 43 ControlPanel
// Dynamically position Page 0 (Controls) elements using the selected layout index
let available_w = (sw - base_x - 290.0).max(300.0);
@@ -2603,20 +2559,20 @@ fn demo_positions(sw: f32, sh: f32, sidebar_w: f32, layout_idx: usize, slots: &G
// Button
(3, 200.0, bh + label_off(3), bh),
// Progress Bar
- (11, 415.0, cce_ui::layout::progressbar_height() + label_off(11), cce_ui::layout::progressbar_height()),
+ (6, 415.0, cce_ui::layout::progressbar_height() + label_off(6), cce_ui::layout::progressbar_height()),
// Inputs
- (51, 200.0, ddh + label_off(51), ddh),
- (9, 200.0, tgh + label_off(9), tgh),
- (10, 200.0, tgh + label_off(10), tgh),
- (12, 200.0, slh + label_off(12), slh),
- (13, 200.0, sph + label_off(13), sph),
- (35, 200.0, ddh + label_off(35), ddh),
- (29, 200.0, cce_ui::layout::rangeslider_height() + label_off(29), cce_ui::layout::rangeslider_height()),
- (30, 200.0, 100.0 + label_off(30), 100.0),
- (36, 200.0, 120.0 + label_off(36), 120.0),
- (46, 200.0, bh + label_off(46), bh),
- (49, 200.0, bh + label_off(49), bh),
- (48, 200.0, 150.0 + label_off(48), 150.0),
+ (44, 200.0, ddh + label_off(44), ddh),
+ (4, 200.0, tgh + label_off(4), tgh),
+ (5, 200.0, tgh + label_off(5), tgh),
+ (7, 200.0, slh + label_off(7), slh),
+ (8, 200.0, sph + label_off(8), sph),
+ (28, 200.0, ddh + label_off(28), ddh),
+ (22, 200.0, cce_ui::layout::rangeslider_height() + label_off(22), cce_ui::layout::rangeslider_height()),
+ (23, 200.0, 100.0 + label_off(23), 100.0),
+ (29, 200.0, 120.0 + label_off(29), 120.0),
+ (39, 200.0, bh + label_off(39), bh),
+ (42, 200.0, bh + label_off(42), bh),
+ (41, 200.0, 150.0 + label_off(41), 150.0),
];
items.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal));
@@ -2772,7 +2728,6 @@ fn demo_positions(sw: f32, sh: f32, sidebar_w: f32, layout_idx: usize, slots: &G
}
}
- vec[6] = (-1000.0, -1000.0, 0.0, 0.0); // 6 is spacer Label, keep hidden/out of sight
vec
}