git.lucas.co / cce-system-interface
system settings
git clone https://git.lucas.co/cce-system-interface.git

commited6d0a93730541b17129ff82edf8976a983e03ad
parent7eec65462f
authorLucas Galante <[email protected]>
date2026-06-24 12:22
Add status bar padding spinbox control

 src/input_handler.rs   |  3 +++
 src/pages/interface.rs | 23 +++++++++++++++++++++++
 src/renderer.rs        |  3 +++
 3 files changed, 29 insertions(+)

diff --git a/src/input_handler.rs b/src/input_handler.rs
index ead89e4..4535de3 100644
--- a/src/input_handler.rs
+++ b/src/input_handler.rs
@@ -258,6 +258,9 @@ impl SystemInterface {
                 if self.app.interface.status_box_corner_radius_spinbox.take_change() {
                     actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetStatusBoxCornerRadius(self.app.interface.status_box_corner_radius_spinbox.value as u16)));
                 }
+                if self.app.interface.status_padding_spinbox.take_change() {
+                    actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetStatusPadding(self.app.interface.status_padding_spinbox.value as u16)));
+                }
 
                 if self.app.interface.button_padding_spinbox.take_change() {
                     actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetButtonPadding(self.app.interface.button_padding_spinbox.value as u16)));
diff --git a/src/pages/interface.rs b/src/pages/interface.rs
index a1f0e20..bdc07f5 100644
--- a/src/pages/interface.rs
+++ b/src/pages/interface.rs
@@ -289,6 +289,8 @@ pub struct InterfaceState {
     pub status_box_background_color: [u8; 3],
     pub status_box_corner_radius: u16,
     pub status_box_corner_radius_spinbox: Spinbox,
+    pub status_padding: u16,
+    pub status_padding_spinbox: Spinbox,
     pub nested_section_label_alignment: u8,
     pub label_alignment_menu: Dropdown,
     pub nested_section_label_offset: i16,
@@ -520,6 +522,8 @@ impl Default for InterfaceState {
             status_box_background_color: [0x15, 0x15, 0x20],
             status_box_corner_radius: 4,
             status_box_corner_radius_spinbox: Spinbox::new(4, 0, 50, 1).with_label("Corner Radius").with_unit("px").with_config(CONFIG_PATH, "status_box_corner_radius"),
+            status_padding: 8,
+            status_padding_spinbox: Spinbox::new(8, 0, 32, 1).with_label("Padding").with_unit("px").with_config(CONFIG_PATH, "status_padding"),
             custom_multicontrol: MultiControl::new("custom_parameters".to_string()).with_label("custom_parameters"),
         }
     }
@@ -562,6 +566,7 @@ pub enum InterfaceMessage {
     SetLayerOpacity(f32),
     SetStatusBoxBackgroundColor([u8; 3]),
     SetStatusBoxCornerRadius(u16),
+    SetStatusPadding(u16),
 
     SetPageMargin(u16),
     SetGridMinColWidth(u16),
@@ -735,6 +740,7 @@ pub fn read_interface_config() -> InterfaceState {
     let window_corner_radius = parse_surfaces_u16(&content, "window_corner_radius", 12);
     let status_box_background_color = parse_color_from_key(&content, "status_box_background_color", [0x15, 0x15, 0x20]);
     let status_box_corner_radius = parse_u16_from(&content, "status_box_corner_radius", 4);
+    let status_padding = parse_u16_from(&content, "status_padding", 8);
     
     InterfaceState {
         windows: read_windows_config(),
@@ -842,6 +848,8 @@ pub fn read_interface_config() -> InterfaceState {
         status_box_background_color,
         status_box_corner_radius,
         status_box_corner_radius_spinbox: Spinbox::new(status_box_corner_radius as i32, 0, 50, 1).with_label("Corner Radius").with_unit("px").with_config(CONFIG_PATH, "status_box_corner_radius"),
+        status_padding,
+        status_padding_spinbox: Spinbox::new(status_padding as i32, 0, 32, 1).with_label("Padding").with_unit("px").with_config(CONFIG_PATH, "status_padding"),
         nested_section_label_alignment,
         label_alignment_menu: Dropdown::new(
             vec!["Left".to_string(), "Center".to_string(), "Right".to_string()],
@@ -1873,6 +1881,11 @@ fn apply_status_box_corner_radius(radius: u16) {
     status_interface_reload();
 }
 
+fn apply_status_padding(padding: u16) {
+    write_config_value("status_padding", &padding.to_string());
+    status_interface_reload();
+}
+
 
 
 fn apply_window_corner_radius(radius: u16) {
@@ -2499,6 +2512,9 @@ pub fn view(state: &mut InterfaceState, cx: f32, cy: f32, cw: f32, ch: f32, sec_
         state.status_box_corner_radius_spinbox.value = state.status_box_corner_radius as i32;
         sec.widget_full(&mut state.status_box_corner_radius_spinbox, 44.0, ctx);
         sec.spacing(8.0);
+        state.status_padding_spinbox.value = state.status_padding as i32;
+        sec.widget_full(&mut state.status_padding_spinbox, 44.0, ctx);
+        sec.spacing(8.0);
     });
 
     // 4. Controls Section
@@ -3184,6 +3200,11 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
             state.status_box_corner_radius_spinbox.value = radius as i32;
             apply_status_box_corner_radius(radius);
         }
+        InterfaceMessage::SetStatusPadding(padding) => {
+            state.status_padding = padding;
+            state.status_padding_spinbox.value = padding as i32;
+            apply_status_padding(padding);
+        }
         InterfaceMessage::SetButtonPadding(padding) => {
             state.button_padding = padding;
             apply_button_padding(padding);
@@ -3432,6 +3453,7 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
             let was_pl_cr_hovered = state.plate_corner_radius_spinbox.hovered();
             let was_page_op_hovered = state.page_opacity_spinbox.hovered();
             let was_layer_op_hovered = state.layer_opacity_spinbox.hovered();
+            let was_sp_pad_hovered = state.status_padding_spinbox.hovered();
 
             let was_pm_hovered = state.page_margin_spinbox.hovered();
             let was_gm_hovered = state.grid_min_col_width_spinbox.hovered();
@@ -3523,6 +3545,7 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
             state.menubar_opacity_spinbox.set_hovered(was_mo_hovered);
             state.notification_opacity_spinbox.set_hovered(was_no_hovered);
             state.window_corner_radius_spinbox.set_hovered(was_wcr_hovered);
+            state.status_padding_spinbox.set_hovered(was_sp_pad_hovered);
 
             if typeface_loaded {
                 state.typeface_loaded = typeface_loaded;
diff --git a/src/renderer.rs b/src/renderer.rs
index d3e705e..fbc179e 100644
--- a/src/renderer.rs
+++ b/src/renderer.rs
@@ -143,6 +143,8 @@ impl SystemInterface {
         self.app.interface.custom_multicontrol.set_parent(None, &mut self.ui_context);
         self.app.interface.status_box_corner_radius_spinbox.clear_children(&mut self.ui_context);
         self.app.interface.status_box_corner_radius_spinbox.set_parent(None, &mut self.ui_context);
+        self.app.interface.status_padding_spinbox.clear_children(&mut self.ui_context);
+        self.app.interface.status_padding_spinbox.set_parent(None, &mut self.ui_context);
 
         self.app.interface.sans_box.clear_children(&mut self.ui_context); self.app.interface.sans_box.set_parent(None, &mut self.ui_context);
         self.app.interface.serif_box.clear_children(&mut self.ui_context); self.app.interface.serif_box.set_parent(None, &mut self.ui_context);
@@ -303,6 +305,7 @@ impl SystemInterface {
                 link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.color_selectors[3], &mut self.ui_context);
                 link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.color_selectors[22], &mut self.ui_context);
                 link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.status_box_corner_radius_spinbox, &mut self.ui_context);
+                link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.status_padding_spinbox, &mut self.ui_context);
                 
                 // Section 3: Controls (parent of: Slider, MenuBar, Toggles, Spinbox, ColorSelector, Textbox, FontSelector)
                 link_parent_child(&mut self.page_sec_containers[3], &mut self.app.interface.color_selectors[5], &mut self.ui_context);