mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:07:46 +00:00
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. :^)
This commit is contained in:
parent
716dc5bec9
commit
d9212bb2f4
1 changed files with 20 additions and 15 deletions
|
@ -126,29 +126,34 @@ FilePicker::FilePicker(Window* parent_window, Mode mode, const StringView& file_
|
||||||
set_path(m_location_textbox->text());
|
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&) {
|
auto open_parent_directory_action = Action::create(
|
||||||
set_path(String::formatted("{}/..", m_model->root_path()));
|
"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);
|
toolbar.add_action(*open_parent_directory_action);
|
||||||
|
|
||||||
auto go_home_action = CommonActions::make_go_home_action([this](auto&) {
|
auto go_home_action = CommonActions::make_go_home_action([this](auto&) {
|
||||||
set_path(Core::StandardPaths::home_directory());
|
set_path(Core::StandardPaths::home_directory());
|
||||||
});
|
},
|
||||||
|
this);
|
||||||
toolbar.add_action(go_home_action);
|
toolbar.add_action(go_home_action);
|
||||||
toolbar.add_separator();
|
toolbar.add_separator();
|
||||||
|
|
||||||
auto mkdir_action = Action::create("New directory...", Gfx::Bitmap::load_from_file("/res/icons/16x16/mkdir.png"), [this](const Action&) {
|
auto mkdir_action = Action::create(
|
||||||
String value;
|
"New directory...", Gfx::Bitmap::load_from_file("/res/icons/16x16/mkdir.png"), [this](const Action&) {
|
||||||
if (InputBox::show(this, value, "Enter name:", "New directory") == InputBox::ExecOK && !value.is_empty()) {
|
String value;
|
||||||
auto new_dir_path = LexicalPath::canonicalized_path(String::formatted("{}/{}", m_model->root_path(), value));
|
if (InputBox::show(this, value, "Enter name:", "New directory") == InputBox::ExecOK && !value.is_empty()) {
|
||||||
int rc = mkdir(new_dir_path.characters(), 0777);
|
auto new_dir_path = LexicalPath::canonicalized_path(String::formatted("{}/{}", m_model->root_path(), value));
|
||||||
if (rc < 0) {
|
int rc = mkdir(new_dir_path.characters(), 0777);
|
||||||
MessageBox::show(this, String::formatted("mkdir(\"{}\") failed: {}", new_dir_path, strerror(errno)), "Error", MessageBox::Type::Error);
|
if (rc < 0) {
|
||||||
} else {
|
MessageBox::show(this, String::formatted("mkdir(\"{}\") failed: {}", new_dir_path, strerror(errno)), "Error", MessageBox::Type::Error);
|
||||||
m_model->update();
|
} else {
|
||||||
|
m_model->update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
});
|
this);
|
||||||
|
|
||||||
toolbar.add_action(*mkdir_action);
|
toolbar.add_action(*mkdir_action);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue