From d9212bb2f4a7c48c560feb7f618e45df7f97e4cb Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 20 Feb 2021 13:17:56 +0100 Subject: [PATCH] LibGUI: Parent FilePicker toolbar buttons to the window This makes the shortcuts actually work since unparented actions are considered application-global, and we disable application-global shortcuts while a modal dialog (like FilePicker) is up. This is pretty counter-intuitive so I think there's room for API improvement here but let's at least make Alt+Up work in FilePicker for now. :^) --- Userland/Libraries/LibGUI/FilePicker.cpp | 35 ++++++++++++++---------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/Userland/Libraries/LibGUI/FilePicker.cpp b/Userland/Libraries/LibGUI/FilePicker.cpp index 8f2a4fba6b..3f9c5dae0c 100644 --- a/Userland/Libraries/LibGUI/FilePicker.cpp +++ b/Userland/Libraries/LibGUI/FilePicker.cpp @@ -126,29 +126,34 @@ FilePicker::FilePicker(Window* parent_window, Mode mode, const StringView& file_ set_path(m_location_textbox->text()); }; - auto open_parent_directory_action = Action::create("Open parent directory", { Mod_Alt, Key_Up }, Gfx::Bitmap::load_from_file("/res/icons/16x16/open-parent-directory.png"), [this](const Action&) { - set_path(String::formatted("{}/..", m_model->root_path())); - }); + auto open_parent_directory_action = Action::create( + "Open parent directory", { Mod_Alt, Key_Up }, Gfx::Bitmap::load_from_file("/res/icons/16x16/open-parent-directory.png"), [this](const Action&) { + set_path(String::formatted("{}/..", m_model->root_path())); + }, + this); toolbar.add_action(*open_parent_directory_action); auto go_home_action = CommonActions::make_go_home_action([this](auto&) { set_path(Core::StandardPaths::home_directory()); - }); + }, + this); toolbar.add_action(go_home_action); toolbar.add_separator(); - auto mkdir_action = Action::create("New directory...", Gfx::Bitmap::load_from_file("/res/icons/16x16/mkdir.png"), [this](const Action&) { - String value; - if (InputBox::show(this, value, "Enter name:", "New directory") == InputBox::ExecOK && !value.is_empty()) { - auto new_dir_path = LexicalPath::canonicalized_path(String::formatted("{}/{}", m_model->root_path(), value)); - int rc = mkdir(new_dir_path.characters(), 0777); - if (rc < 0) { - MessageBox::show(this, String::formatted("mkdir(\"{}\") failed: {}", new_dir_path, strerror(errno)), "Error", MessageBox::Type::Error); - } else { - m_model->update(); + auto mkdir_action = Action::create( + "New directory...", Gfx::Bitmap::load_from_file("/res/icons/16x16/mkdir.png"), [this](const Action&) { + String value; + if (InputBox::show(this, value, "Enter name:", "New directory") == InputBox::ExecOK && !value.is_empty()) { + auto new_dir_path = LexicalPath::canonicalized_path(String::formatted("{}/{}", m_model->root_path(), value)); + int rc = mkdir(new_dir_path.characters(), 0777); + if (rc < 0) { + MessageBox::show(this, String::formatted("mkdir(\"{}\") failed: {}", new_dir_path, strerror(errno)), "Error", MessageBox::Type::Error); + } else { + m_model->update(); + } } - } - }); + }, + this); toolbar.add_action(*mkdir_action);