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

commit2d5c597eb5019660c6ff94958e61aac62d2a0921
parent09f78600f1
authorLucas Galante <[email protected]>
date2026-06-29 21:29
Fix panic during popup layout by safely checking popover_rect return option

 src/backend/window_runner.rs | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/backend/window_runner.rs b/src/backend/window_runner.rs
index 7fa7f15..3f74c2c 100644
--- a/src/backend/window_runner.rs
+++ b/src/backend/window_runner.rs
@@ -2414,10 +2414,15 @@ pub fn run<A: Application>() {
 
         let active_popovers = crate::widget::popovers::get_active();
         let context_menu_visible = crate::widget::context_menu::is_visible();
-        if !active_popovers.is_empty() || context_menu_visible {
-            let (px, py, mut pw, mut ph, is_context_menu) = if !active_popovers.is_empty() {
-                let popover_widget = unsafe { &*active_popovers[0] };
-                let (x, y, w, h) = popover_widget.popover_rect().unwrap();
+
+        let mut active_popover_rect = None;
+        if !active_popovers.is_empty() {
+            let popover_widget = unsafe { &*active_popovers[0] };
+            active_popover_rect = popover_widget.popover_rect();
+        }
+
+        if active_popover_rect.is_some() || context_menu_visible {
+            let (px, py, mut pw, mut ph, is_context_menu) = if let Some((x, y, w, h)) = active_popover_rect {
                 (x, y, w.max(1.0), h.max(1.0), false)
             } else {
                 (