From 2c9147154c2e3ec0e6030bd06237674e89ef9f10 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 30 Dec 2020 13:42:16 +0100 Subject: [PATCH] Terminal+LibVT: Add settings window to the terminal context menu --- Applications/Terminal/main.cpp | 35 ++++++++++++++++++++------------ Libraries/LibVT/TerminalWidget.h | 2 ++ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/Applications/Terminal/main.cpp b/Applications/Terminal/main.cpp index 5ff441da7c..7fef9821ec 100644 --- a/Applications/Terminal/main.cpp +++ b/Applications/Terminal/main.cpp @@ -178,7 +178,7 @@ static pid_t run_command(int ptm_fd, String command) static RefPtr create_settings_window(TerminalWidget& terminal) { auto window = GUI::Window::construct(); - window->set_title("Terminal Settings"); + window->set_title("Terminal settings"); window->set_resizable(false); window->resize(200, 210); window->set_modal(true); @@ -413,6 +413,25 @@ int main(int argc, char** argv) auto new_scrollback_size = config->read_num_entry("Terminal", "MaxHistorySize", terminal.max_history_size()); terminal.set_max_history_size(new_scrollback_size); + auto open_settings_action = GUI::Action::create("Settings...", Gfx::Bitmap::load_from_file("/res/icons/16x16/gear.png"), + [&](const GUI::Action&) { + if (!settings_window) { + settings_window = create_settings_window(terminal); + settings_window->on_close_request = [&] { + settings_window = nullptr; + return GUI::Window::CloseRequestDecision::Close; + }; + } + if (!settings_window->is_visible()) { + settings_window->center_within(*window); + settings_window->show(); + } + settings_window->move_to_front(); + }); + + terminal.context_menu().add_separator(); + terminal.context_menu().add_action(open_settings_action); + auto menubar = GUI::MenuBar::construct(); auto& app_menu = menubar->add_menu("Terminal"); @@ -426,18 +445,8 @@ int main(int argc, char** argv) perror("disown"); } })); - app_menu.add_action(GUI::Action::create("Settings...", Gfx::Bitmap::load_from_file("/res/icons/16x16/gear.png"), - [&](const GUI::Action&) { - if (!settings_window) { - settings_window = create_settings_window(terminal); - settings_window->on_close_request = [&] { - settings_window = nullptr; - return GUI::Window::CloseRequestDecision::Close; - }; - } - settings_window->show(); - settings_window->move_to_front(); - })); + + app_menu.add_action(open_settings_action); app_menu.add_separator(); app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) { dbgln("Terminal: Quit menu activated!"); diff --git a/Libraries/LibVT/TerminalWidget.h b/Libraries/LibVT/TerminalWidget.h index 6462740759..cb5c2274c0 100644 --- a/Libraries/LibVT/TerminalWidget.h +++ b/Libraries/LibVT/TerminalWidget.h @@ -104,6 +104,8 @@ public: Function on_title_change; Function on_command_exit; + GUI::Menu& context_menu() { return *m_context_menu; } + private: // ^GUI::Widget virtual void event(Core::Event&) override;