From 5f9aad7fa24e0519f5144fafe521bed4e159a9ef Mon Sep 17 00:00:00 2001 From: arabian Date: Wed, 25 Feb 2026 00:09:39 +0300 Subject: [PATCH] fix(pwsp-gui): some hotkeys now won't work when search entry is focused --- src/gui/input.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/gui/input.rs b/src/gui/input.rs index 93fd194..ab621cb 100644 --- a/src/gui/input.rs +++ b/src/gui/input.rs @@ -1,5 +1,5 @@ use crate::gui::SoundpadGui; -use egui::{Context, Key, Modifiers}; +use egui::{Context, Id, Key, Modifiers}; use std::path::PathBuf; @@ -12,22 +12,36 @@ impl SoundpadGui { ctx.input(|i| i.modifiers) } + fn get_focused(&self, ctx: &Context) -> Option { + ctx.memory(|m| m.focused()) + } + pub fn handle_input(&mut self, ctx: &Context) { let modifiers = self.modifiers(ctx); + let is_search_focused = { + if let Some(focused_id) = self.get_focused(ctx) + && let Some(search_id) = self.app_state.search_field_id + && focused_id.eq(&search_id) + { + true + } else { + false + } + }; // Open/close settings - if self.key_pressed(ctx, Key::I) { + if !is_search_focused && self.key_pressed(ctx, Key::I) { self.app_state.show_settings = !self.app_state.show_settings; } if !self.app_state.show_settings { // Pause / resume audio on space - if self.key_pressed(ctx, Key::Space) { + if !is_search_focused && self.key_pressed(ctx, Key::Space) { self.play_toggle(); } // Stop all audio tracks on backspace - if self.key_pressed(ctx, Key::Backspace) { + if !is_search_focused && self.key_pressed(ctx, Key::Backspace) { self.stop(None); }