use crate::app::window_state::WindowState;
use winit::event::{ElementState, KeyEvent};
use winit::keyboard::{Key, NamedKey};
impl WindowState {
pub(crate) fn handle_search_keys(&mut self, event: &KeyEvent) -> bool {
if self.overlay_ui.search_ui.visible {
if event.state == ElementState::Pressed
&& let Key::Named(NamedKey::Escape) = &event.logical_key
{
self.overlay_ui.search_ui.close();
self.focus_state.needs_redraw = true;
return true;
}
return false;
}
if event.state == ElementState::Pressed {
let mods = self.input_handler.modifiers.state();
#[cfg(target_os = "macos")]
let is_search = crate::platform::primary_modifier(&mods)
&& matches!(event.logical_key, Key::Character(ref c) if c.eq_ignore_ascii_case("f"));
#[cfg(not(target_os = "macos"))]
let is_search = crate::platform::primary_modifier_with_shift(&mods)
&& matches!(event.logical_key, Key::Character(ref c) if c.eq_ignore_ascii_case("f"));
if is_search {
self.overlay_ui.search_ui.open();
self.overlay_ui.search_ui.init_from_config(
self.config.search.search_case_sensitive,
self.config.search.search_regex,
);
self.focus_state.needs_redraw = true;
log::debug!("Search UI opened");
return true;
}
}
false
}
}