git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commitba0dd238130b1c622cfaf62d71ffc9572522fa34
parent42eb4d778d
authorLucas Galante <[email protected]>
date2026-06-16 17:40
Remove column layout capability from Plate and Paginator

 src/widget/container/paginator.rs |   7 +--
 src/widget/container/plate.rs     | 125 ++++++++++++++++----------------------
 2 files changed, 53 insertions(+), 79 deletions(-)

diff --git a/src/widget/container/paginator.rs b/src/widget/container/paginator.rs
index f1d48fc..1ec26b9 100644
--- a/src/widget/container/paginator.rs
+++ b/src/widget/container/paginator.rs
@@ -147,12 +147,7 @@ impl Paginator {
         (r.2, r.3)
     }
 
-    pub fn with_column_layout(mut self, enabled: bool) -> Self {
-        for plate in &mut self.plates {
-            plate.column_layout = enabled;
-        }
-        self
-    }
+
 
     pub fn with_sidebar_mode(mut self, enabled: bool) -> Self {
         self.sidebar_mode = enabled;
diff --git a/src/widget/container/plate.rs b/src/widget/container/plate.rs
index d883eaa..edd5bfc 100644
--- a/src/widget/container/plate.rs
+++ b/src/widget/container/plate.rs
@@ -16,7 +16,6 @@ pub struct Plate {
     pub network_opacity: f32,
     pub blur: bool,
     pub visible: bool,
-    pub column_layout: bool,
     pub draggable: bool,
     pub solid_border: Option<([f32; 4], f32)>,
     pub selected: bool,
@@ -46,7 +45,6 @@ impl Plate {
             network_opacity: 1.0,
             blur: true,
             visible: true,
-            column_layout: false,
             draggable: true,
             solid_border: None,
             selected: false,
@@ -242,77 +240,58 @@ impl Element for Plate {
             }
         }
 
-        if self.column_layout {
-            let mut current_y = start_y;
-            let spacing = 12.0;
-            for &w_ptr in &active_widgets {
-                let w = unsafe { &mut *w_ptr };
-                let (_, _, ww, wh) = w.rect();
-                let use_w = if ww > 0.0 { ww.min(available_w) } else { available_w };
-                let top = crate::widget::label_offset(w);
-                let use_h = if wh > 0.0 { wh } else { 24.0 + top };
-
-                let max_y = clamped_y + clamped_h - padding_y;
-                let active_y = current_y.min(max_y);
-                let active_h = use_h.min(max_y - active_y);
-
-                w.set_rect(left_x, active_y, use_w, active_h);
-                current_y += active_h + spacing;
-            }
-        } else {
-            let mut total_diagonal = 0.0;
-            let mut count = 0;
-            for &w_ptr in &active_widgets {
-                let w = unsafe { &*w_ptr };
-                let (_, _, ww, wh) = w.rect();
-                let use_w = if ww > 0.0 { ww.min(available_w) } else { available_w };
-                let use_h = if wh > 0.0 { wh } else { 50.0 };
-                total_diagonal += (use_w * use_w + use_h * use_h).sqrt();
-                count += 1;
-            }
-            let avg_diagonal = if count > 0 { total_diagonal / count as f32 } else { 100.0 };
-            let base_spacing = (avg_diagonal * 0.55).max(60.0);
-
-            for (i, &w_ptr) in active_widgets.iter().enumerate() {
-                let w = unsafe { &mut *w_ptr };
-                let (_, _, ww, wh) = w.rect();
-                let use_w = if ww > 0.0 { ww.min(available_w) } else { available_w };
-                let use_h = if wh > 0.0 { wh } else { 50.0 };
-
-                if i == 0 {
-                    let cx = (center_x - use_w / 2.0).clamp(left_x, (left_x + available_w - use_w).max(left_x));
-                    let cy = (center_y - use_h / 2.0).clamp(start_y, (start_y + available_h - use_h).max(start_y));
-                    let cw = use_w.min(clamped_x + clamped_w - padding_x - cx);
-                    let ch = use_h.min(clamped_y + clamped_h - padding_y - cy);
-                    w.set_rect(cx, cy, cw, ch);
-                } else {
-                    let mut ring = 1;
-                    let mut ring_start = 1;
-                    let mut placed = false;
-                    while !placed {
-                        let ring_capacity = ring * 6;
-                        if i < ring_start + ring_capacity {
-                            let pos_in_ring = i - ring_start;
-                            let angle = (pos_in_ring as f32) * (2.0 * std::f32::consts::PI / ring_capacity as f32);
-                            let radius = (ring as f32) * base_spacing;
-
-                            let x_offset = radius * angle.cos() * aspect_ratio;
-                            let y_offset = radius * angle.sin();
-
-                            let raw_x = center_x + x_offset - use_w / 2.0;
-                            let raw_y = center_y + y_offset - use_h / 2.0;
-
-                            let cx = raw_x.clamp(left_x, (left_x + available_w - use_w).max(left_x));
-                            let cy = raw_y.clamp(start_y, (start_y + available_h - use_h).max(start_y));
-                            let cw = use_w.min(clamped_x + clamped_w - padding_x - cx);
-                            let ch = use_h.min(clamped_y + clamped_h - padding_y - cy);
-
-                            w.set_rect(cx, cy, cw, ch);
-                            placed = true;
-                        } else {
-                            ring_start += ring_capacity;
-                            ring += 1;
-                        }
+        let mut total_diagonal = 0.0;
+        let mut count = 0;
+        for &w_ptr in &active_widgets {
+            let w = unsafe { &*w_ptr };
+            let (_, _, ww, wh) = w.rect();
+            let use_w = if ww > 0.0 { ww.min(available_w) } else { available_w };
+            let use_h = if wh > 0.0 { wh } else { 50.0 };
+            total_diagonal += (use_w * use_w + use_h * use_h).sqrt();
+            count += 1;
+        }
+        let avg_diagonal = if count > 0 { total_diagonal / count as f32 } else { 100.0 };
+        let base_spacing = (avg_diagonal * 0.55).max(60.0);
+
+        for (i, &w_ptr) in active_widgets.iter().enumerate() {
+            let w = unsafe { &mut *w_ptr };
+            let (_, _, ww, wh) = w.rect();
+            let use_w = if ww > 0.0 { ww.min(available_w) } else { available_w };
+            let use_h = if wh > 0.0 { wh } else { 50.0 };
+
+            if i == 0 {
+                let cx = (center_x - use_w / 2.0).clamp(left_x, (left_x + available_w - use_w).max(left_x));
+                let cy = (center_y - use_h / 2.0).clamp(start_y, (start_y + available_h - use_h).max(start_y));
+                let cw = use_w.min(clamped_x + clamped_w - padding_x - cx);
+                let ch = use_h.min(clamped_y + clamped_h - padding_y - cy);
+                w.set_rect(cx, cy, cw, ch);
+            } else {
+                let mut ring = 1;
+                let mut ring_start = 1;
+                let mut placed = false;
+                while !placed {
+                    let ring_capacity = ring * 6;
+                    if i < ring_start + ring_capacity {
+                        let pos_in_ring = i - ring_start;
+                        let angle = (pos_in_ring as f32) * (2.0 * std::f32::consts::PI / ring_capacity as f32);
+                        let radius = (ring as f32) * base_spacing;
+
+                        let x_offset = radius * angle.cos() * aspect_ratio;
+                        let y_offset = radius * angle.sin();
+
+                        let raw_x = center_x + x_offset - use_w / 2.0;
+                        let raw_y = center_y + y_offset - use_h / 2.0;
+
+                        let cx = raw_x.clamp(left_x, (left_x + available_w - use_w).max(left_x));
+                        let cy = raw_y.clamp(start_y, (start_y + available_h - use_h).max(start_y));
+                        let cw = use_w.min(clamped_x + clamped_w - padding_x - cx);
+                        let ch = use_h.min(clamped_y + clamped_h - padding_y - cy);
+
+                        w.set_rect(cx, cy, cw, ch);
+                        placed = true;
+                    } else {
+                        ring_start += ring_capacity;
+                        ring += 1;
                     }
                 }
             }