Skip to content

Commit 0143046

Browse files
committed
Add Ctrl+F/S shortcuts for focusing the object and symbol filter text edits
1 parent 5de087c commit 0143046

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

objdiff-gui/src/hotkeys.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use egui::{style::ScrollAnimation, vec2, Context, Key, Modifiers, PointerButton};
1+
use egui::{
2+
style::ScrollAnimation, vec2, Context, Key, KeyboardShortcut, Modifiers, PointerButton,
3+
};
24

35
fn any_widget_focused(ctx: &Context) -> bool { ctx.memory(|mem| mem.focused().is_some()) }
46

@@ -74,3 +76,15 @@ pub fn consume_down_key(ctx: &Context) -> bool {
7476
i.consume_key(Modifiers::NONE, Key::ArrowDown) || i.consume_key(Modifiers::NONE, Key::S)
7577
})
7678
}
79+
80+
const OBJECT_FILTER_SHORTCUT: KeyboardShortcut = KeyboardShortcut::new(Modifiers::CTRL, Key::F);
81+
82+
pub fn consume_object_filter_shortcut(ctx: &Context) -> bool {
83+
ctx.input_mut(|i| i.consume_shortcut(&OBJECT_FILTER_SHORTCUT))
84+
}
85+
86+
const SYMBOL_FILTER_SHORTCUT: KeyboardShortcut = KeyboardShortcut::new(Modifiers::CTRL, Key::S);
87+
88+
pub fn consume_symbol_filter_shortcut(ctx: &Context) -> bool {
89+
ctx.input_mut(|i| i.consume_shortcut(&SYMBOL_FILTER_SHORTCUT))
90+
}

objdiff-gui/src/views/config.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use strum::{EnumMessage, VariantArray};
2121
use crate::{
2222
app::{AppConfig, AppState, AppStateRef, ObjectConfig},
2323
config::ProjectObjectNode,
24+
hotkeys,
2425
jobs::{
2526
check_update::{start_check_update, CheckUpdateResult},
2627
update::start_update,
@@ -254,7 +255,11 @@ pub fn config_ui(
254255
}
255256
} else {
256257
let had_search = !config_state.object_search.is_empty();
257-
egui::TextEdit::singleline(&mut config_state.object_search).hint_text("Filter").ui(ui);
258+
let response =
259+
egui::TextEdit::singleline(&mut config_state.object_search).hint_text("Filter").ui(ui);
260+
if hotkeys::consume_object_filter_shortcut(ui.ctx()) {
261+
response.request_focus();
262+
}
258263

259264
let mut root_open = None;
260265
let mut node_open = NodeOpen::Default;

objdiff-gui/src/views/symbol_diff.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,11 @@ pub fn symbol_diff_ui(
898898
});
899899

900900
let mut search = state.search.clone();
901-
if TextEdit::singleline(&mut search).hint_text("Filter symbols").ui(ui).changed() {
901+
let response = TextEdit::singleline(&mut search).hint_text("Filter symbols").ui(ui);
902+
if hotkeys::consume_symbol_filter_shortcut(ui.ctx()) {
903+
response.request_focus();
904+
}
905+
if response.changed() {
902906
ret = Some(DiffViewAction::SetSearch(search));
903907
}
904908
} else if column == 1 {

0 commit comments

Comments
 (0)