1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:18:11 +00:00

HackStudio: Make the "find in files" widget more keyboard-accessible

Have Ctrl+Shift+F open the find-in-files widget and focus the text box
so you can start entering text right away.

Also make it do a search when you press the return key.
This commit is contained in:
Andreas Kling 2019-10-23 21:02:02 +02:00
parent d3e81d2ba8
commit 2d460b504f

View file

@ -27,6 +27,7 @@ OwnPtr<Project> g_project;
RefPtr<GWindow> g_window;
RefPtr<GListView> g_project_list_view;
RefPtr<GTextEditor> g_text_editor;
RefPtr<GTextBox> g_find_in_files_textbox;
static void build(TerminalWrapper&);
static void run(TerminalWrapper&);
@ -74,7 +75,8 @@ int main(int argc, char** argv)
auto tab_widget = GTabWidget::construct(inner_splitter);
tab_widget->add_widget("Find in files", build_find_in_files_widget());
auto find_in_files_widget = build_find_in_files_widget();
tab_widget->add_widget("Find in files", find_in_files_widget);
auto terminal_wrapper = TerminalWrapper::construct(nullptr);
tab_widget->add_widget("Console", terminal_wrapper);
@ -111,6 +113,14 @@ int main(int argc, char** argv)
}));
menubar->add_menu(move(app_menu));
auto edit_menu = make<GMenu>("Edit");
edit_menu->add_action(GAction::create("Find in files...", { Mod_Ctrl | Mod_Shift, Key_F }, [&](auto&) {
tab_widget->set_active_widget(find_in_files_widget);
g_find_in_files_textbox->select_all();
g_find_in_files_textbox->set_focus(true);
}));
menubar->add_menu(move(edit_menu));
auto build_menu = make<GMenu>("Build");
build_menu->add_action(GAction::create("Build", { Mod_Ctrl, Key_B }, [&](auto&) {
build(terminal_wrapper);
@ -191,9 +201,9 @@ NonnullRefPtr<GWidget> build_find_in_files_widget()
{
auto widget = GWidget::construct();
widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
auto textbox = GTextBox::construct(widget);
textbox->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
textbox->set_preferred_size(0, 20);
g_find_in_files_textbox = GTextBox::construct(widget);
g_find_in_files_textbox->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
g_find_in_files_textbox->set_preferred_size(0, 20);
auto button = GButton::construct("Find in files", widget);
button->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
button->set_preferred_size(0, 20);
@ -212,10 +222,13 @@ NonnullRefPtr<GWidget> build_find_in_files_widget()
g_text_editor->set_focus(true);
};
button->on_click = [textbox, result_view = result_view.ptr()](auto&) {
auto results_model = find_in_files(textbox->text());
button->on_click = [result_view = result_view.ptr()](auto&) {
auto results_model = find_in_files(g_find_in_files_textbox->text());
result_view->set_model(results_model);
};
g_find_in_files_textbox->on_return_pressed = [button = button.ptr()] {
button->click();
};
return widget;
}