mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:47:46 +00:00
GFilePicker: Make double-clicking actually choose/pick the file
..unless it's a directory, in which case we navigate into the directory instead, as you would expect.
This commit is contained in:
parent
d31ddf9aaa
commit
db6ed8eebd
1 changed files with 17 additions and 7 deletions
|
@ -142,7 +142,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
|
||||||
on_file_return();
|
on_file_return();
|
||||||
};
|
};
|
||||||
|
|
||||||
m_view->on_activation = [this](auto& index) {
|
m_view->on_selection = [this](auto& index) {
|
||||||
auto& filter_model = (GSortingProxyModel&)*m_view->model();
|
auto& filter_model = (GSortingProxyModel&)*m_view->model();
|
||||||
auto local_index = filter_model.map_to_target(index);
|
auto local_index = filter_model.map_to_target(index);
|
||||||
const GDirectoryModel::Entry& entry = m_model->entry(local_index.row());
|
const GDirectoryModel::Entry& entry = m_model->entry(local_index.row());
|
||||||
|
@ -150,13 +150,9 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
|
||||||
|
|
||||||
clear_preview();
|
clear_preview();
|
||||||
|
|
||||||
if (entry.is_directory()) {
|
if (!entry.is_directory())
|
||||||
m_model->open(path.string());
|
|
||||||
// NOTE: 'entry' is invalid from here on
|
|
||||||
} else {
|
|
||||||
m_filename_textbox->set_text(entry.name);
|
m_filename_textbox->set_text(entry.name);
|
||||||
set_preview(path);
|
set_preview(path);
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
auto* button_container = new GWidget(lower_container);
|
auto* button_container = new GWidget(lower_container);
|
||||||
|
@ -182,6 +178,20 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
|
||||||
on_file_return();
|
on_file_return();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
m_view->on_activation = [this](auto& index) {
|
||||||
|
auto& filter_model = (GSortingProxyModel&)*m_view->model();
|
||||||
|
auto local_index = filter_model.map_to_target(index);
|
||||||
|
const GDirectoryModel::Entry& entry = m_model->entry(local_index.row());
|
||||||
|
FileSystemPath path(String::format("%s/%s", m_model->path().characters(), entry.name.characters()));
|
||||||
|
|
||||||
|
if (entry.is_directory()) {
|
||||||
|
m_model->open(path.string());
|
||||||
|
// NOTE: 'entry' is invalid from here on
|
||||||
|
} else {
|
||||||
|
on_file_return();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
auto* preview_container = new GFrame(horizontal_container);
|
auto* preview_container = new GFrame(horizontal_container);
|
||||||
preview_container->set_size_policy(SizePolicy::Fixed, SizePolicy::Fill);
|
preview_container->set_size_policy(SizePolicy::Fixed, SizePolicy::Fill);
|
||||||
preview_container->set_preferred_size(180, 0);
|
preview_container->set_preferred_size(180, 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue