diff --git a/Applications/FileManager/DirectoryView.cpp b/Applications/FileManager/DirectoryView.cpp index 4a596ed92a..8efe532ec3 100644 --- a/Applications/FileManager/DirectoryView.cpp +++ b/Applications/FileManager/DirectoryView.cpp @@ -92,7 +92,7 @@ void DirectoryView::handle_activation(const GUI::ModelIndex& index) if (!index.is_valid()) return; dbgprintf("on activation: %d,%d, this=%p, m_model=%p\n", index.row(), index.column(), this, m_model.ptr()); - auto& node = model().node(index); + auto& node = this->node(index); auto path = node.full_path(); struct stat st; @@ -142,6 +142,11 @@ DirectoryView::DirectoryView(Mode mode) set_view_mode(ViewMode::Icon); } +const GUI::FileSystemModel::Node& DirectoryView::node(const GUI::ModelIndex& index) const +{ + return model().node(m_sorting_model->map_to_source(index)); +} + void DirectoryView::setup_model() { m_model->set_root_path(Core::StandardPaths::desktop_directory()); @@ -195,7 +200,7 @@ void DirectoryView::setup_icon_view() m_icon_view->set_model(m_sorting_model); m_icon_view->set_model_column(GUI::FileSystemModel::Column::Name); m_icon_view->on_activation = [&](auto& index) { - handle_activation(map_index(index)); + handle_activation(index); }; m_icon_view->on_selection_change = [this] { update_statusbar(); @@ -204,11 +209,11 @@ void DirectoryView::setup_icon_view() }; m_icon_view->on_context_menu_request = [this](auto& index, auto& event) { if (on_context_menu_request) - on_context_menu_request(map_index(index), event); + on_context_menu_request(index, event); }; m_icon_view->on_drop = [this](auto& index, auto& event) { if (on_drop) - on_drop(map_index(index), event); + on_drop(index, event); }; } @@ -219,7 +224,7 @@ void DirectoryView::setup_columns_view() m_columns_view->set_model_column(GUI::FileSystemModel::Column::Name); m_columns_view->on_activation = [&](auto& index) { - handle_activation(map_index(index)); + handle_activation(index); }; m_columns_view->on_selection_change = [this] { @@ -230,12 +235,12 @@ void DirectoryView::setup_columns_view() m_columns_view->on_context_menu_request = [this](auto& index, auto& event) { if (on_context_menu_request) - on_context_menu_request(map_index(index), event); + on_context_menu_request(index, event); }; m_columns_view->on_drop = [this](auto& index, auto& event) { if (on_drop) - on_drop(map_index(index), event); + on_drop(index, event); }; } @@ -247,7 +252,7 @@ void DirectoryView::setup_table_view() m_table_view->set_key_column_and_sort_order(GUI::FileSystemModel::Column::Name, GUI::SortOrder::Ascending); m_table_view->on_activation = [&](auto& index) { - handle_activation(map_index(index)); + handle_activation(index); }; m_table_view->on_selection_change = [this] { @@ -258,12 +263,12 @@ void DirectoryView::setup_table_view() m_table_view->on_context_menu_request = [this](auto& index, auto& event) { if (on_context_menu_request) - on_context_menu_request(map_index(index), event); + on_context_menu_request(index, event); }; m_table_view->on_drop = [this](auto& index, auto& event) { if (on_drop) - on_drop(map_index(index), event); + on_drop(index, event); }; } @@ -356,11 +361,6 @@ void DirectoryView::open_next_directory() } } -GUI::ModelIndex DirectoryView::map_index(const GUI::ModelIndex& index) const -{ - return m_sorting_model->map_to_source(index); -} - void DirectoryView::update_statusbar() { size_t total_size = model().node({}).total_size; @@ -392,7 +392,7 @@ void DirectoryView::update_statusbar() builder.append(')'); if (selected_item_count == 1) { - auto& node = model().node(map_index(current_view().selection().first())); + auto& node = this->node(current_view().selection().first()); if (!node.symlink_target.is_empty()) { builder.append(" -> "); builder.append(node.symlink_target); diff --git a/Applications/FileManager/DirectoryView.h b/Applications/FileManager/DirectoryView.h index dcfc4a205c..9ee572ac4f 100644 --- a/Applications/FileManager/DirectoryView.h +++ b/Applications/FileManager/DirectoryView.h @@ -128,7 +128,7 @@ public: void set_should_show_dotfiles(bool); - GUI::FileSystemModel& model() { return *m_model; } + const GUI::FileSystemModel::Node& node(const GUI::ModelIndex&) const; bool is_desktop() const { return m_mode == Mode::Desktop; } @@ -140,6 +140,7 @@ public: private: explicit DirectoryView(Mode); const GUI::FileSystemModel& model() const { return *m_model; } + GUI::FileSystemModel& model() { return *m_model; } // ^GUI::ModelClient virtual void model_did_update(unsigned) override; @@ -151,7 +152,6 @@ private: void setup_table_view(); void handle_activation(const GUI::ModelIndex&); - GUI::ModelIndex map_index(const GUI::ModelIndex&) const; void set_status_message(const StringView&); void update_statusbar(); diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp index f6272e1042..a187d9e1b1 100644 --- a/Applications/FileManager/main.cpp +++ b/Applications/FileManager/main.cpp @@ -702,7 +702,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio directory_view.on_context_menu_request = [&](const GUI::ModelIndex& index, const GUI::ContextMenuEvent& event) { if (index.is_valid()) { - auto& node = directory_view.model().node(index); + auto& node = directory_view.node(index); if (node.is_directory()) { auto should_get_enabled = access(node.full_path().characters(), W_OK) == 0 && GUI::Clipboard::the().type() == "text/uri-list"; @@ -769,7 +769,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio return; } - auto& target_node = directory_view.model().node(index); + auto& target_node = directory_view.node(index); if (!target_node.is_directory()) return;