diff --git a/DevTools/HackStudio/main.cpp b/DevTools/HackStudio/main.cpp index f0452d57d0..729d4e2c6b 100644 --- a/DevTools/HackStudio/main.cpp +++ b/DevTools/HackStudio/main.cpp @@ -27,6 +27,7 @@ OwnPtr g_project; RefPtr g_window; RefPtr g_project_list_view; RefPtr g_text_editor; +RefPtr 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("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("Build"); build_menu->add_action(GAction::create("Build", { Mod_Ctrl, Key_B }, [&](auto&) { build(terminal_wrapper); @@ -191,9 +201,9 @@ NonnullRefPtr build_find_in_files_widget() { auto widget = GWidget::construct(); widget->set_layout(make(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 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; }