mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 22:07:34 +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:
parent
d3e81d2ba8
commit
2d460b504f
1 changed files with 19 additions and 6 deletions
|
@ -27,6 +27,7 @@ OwnPtr<Project> g_project;
|
||||||
RefPtr<GWindow> g_window;
|
RefPtr<GWindow> g_window;
|
||||||
RefPtr<GListView> g_project_list_view;
|
RefPtr<GListView> g_project_list_view;
|
||||||
RefPtr<GTextEditor> g_text_editor;
|
RefPtr<GTextEditor> g_text_editor;
|
||||||
|
RefPtr<GTextBox> g_find_in_files_textbox;
|
||||||
|
|
||||||
static void build(TerminalWrapper&);
|
static void build(TerminalWrapper&);
|
||||||
static void run(TerminalWrapper&);
|
static void run(TerminalWrapper&);
|
||||||
|
@ -74,7 +75,8 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
auto tab_widget = GTabWidget::construct(inner_splitter);
|
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);
|
auto terminal_wrapper = TerminalWrapper::construct(nullptr);
|
||||||
tab_widget->add_widget("Console", terminal_wrapper);
|
tab_widget->add_widget("Console", terminal_wrapper);
|
||||||
|
@ -111,6 +113,14 @@ int main(int argc, char** argv)
|
||||||
}));
|
}));
|
||||||
menubar->add_menu(move(app_menu));
|
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");
|
auto build_menu = make<GMenu>("Build");
|
||||||
build_menu->add_action(GAction::create("Build", { Mod_Ctrl, Key_B }, [&](auto&) {
|
build_menu->add_action(GAction::create("Build", { Mod_Ctrl, Key_B }, [&](auto&) {
|
||||||
build(terminal_wrapper);
|
build(terminal_wrapper);
|
||||||
|
@ -191,9 +201,9 @@ NonnullRefPtr<GWidget> build_find_in_files_widget()
|
||||||
{
|
{
|
||||||
auto widget = GWidget::construct();
|
auto widget = GWidget::construct();
|
||||||
widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
||||||
auto textbox = GTextBox::construct(widget);
|
g_find_in_files_textbox = GTextBox::construct(widget);
|
||||||
textbox->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
g_find_in_files_textbox->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
||||||
textbox->set_preferred_size(0, 20);
|
g_find_in_files_textbox->set_preferred_size(0, 20);
|
||||||
auto button = GButton::construct("Find in files", widget);
|
auto button = GButton::construct("Find in files", widget);
|
||||||
button->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
button->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
||||||
button->set_preferred_size(0, 20);
|
button->set_preferred_size(0, 20);
|
||||||
|
@ -212,10 +222,13 @@ NonnullRefPtr<GWidget> build_find_in_files_widget()
|
||||||
g_text_editor->set_focus(true);
|
g_text_editor->set_focus(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
button->on_click = [textbox, result_view = result_view.ptr()](auto&) {
|
button->on_click = [result_view = result_view.ptr()](auto&) {
|
||||||
auto results_model = find_in_files(textbox->text());
|
auto results_model = find_in_files(g_find_in_files_textbox->text());
|
||||||
result_view->set_model(results_model);
|
result_view->set_model(results_model);
|
||||||
};
|
};
|
||||||
|
g_find_in_files_textbox->on_return_pressed = [button = button.ptr()] {
|
||||||
|
button->click();
|
||||||
|
};
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue