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

commit1fec3f4bec3875ab770f2651e32ef55015fee862
parentb31edd1a12
authorLucas Galante <[email protected]>
date2026-06-17 10:57
Close context menu on Escape key press

 src/main.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/main.rs b/src/main.rs
index e86077f..a8fa096 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4186,6 +4186,16 @@ fn collect_popover_rects(w: &dyn cce_ui::widget::Element, popovers: &mut Vec<(f3
     }
 
     fn handle_key_input_internal(&mut self, event: &cce_ui::widget::KeyEvent) -> bool {
+        if cce_ui::widget::context_menu::is_visible() {
+            if event.state == cce_ui::widget::ElementState::Pressed
+                && event.logical_key == cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Escape)
+            {
+                cce_ui::widget::context_menu::hide();
+                self.needs_rebuild = true;
+                return true;
+            }
+        }
+
         if event.state == cce_ui::widget::ElementState::Pressed && !event.repeat {
             let is_nav_key = match (&event.logical_key, event.ctrl) {
                 (cce_ui::widget::Key::Character(c), true) if c == "j" || c == "J" || c == "k" || c == "K" || c == "u" || c == "U" || c == "i" || c == "I" => true,