From de31603028e6bf4e0840796d5d3162044c8d56b3 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 10 Sep 2021 13:13:51 +0300 Subject: [PATCH] LibGUI: Remove Indices with dangling FileSystemModel::Node on deletion When a file deletion event happens, we now iterate over all views of the FileSystemModel and remove any selection & cursor indices that hold dangling references do the deleted filesystem node. This fixes #9602. --- Userland/Libraries/LibGUI/FileSystemModel.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Userland/Libraries/LibGUI/FileSystemModel.cpp b/Userland/Libraries/LibGUI/FileSystemModel.cpp index f7e79e72a2..eb03b50850 100644 --- a/Userland/Libraries/LibGUI/FileSystemModel.cpp +++ b/Userland/Libraries/LibGUI/FileSystemModel.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -420,6 +421,16 @@ void FileSystemModel::handle_file_event(Core::FileWatcherEvent const& event) parent->m_children.remove(index.row()); end_delete_rows(); + + for_each_view([&](AbstractView& view) { + view.selection().remove_matching([&](auto& selection_index) { + return selection_index.internal_data() == index.internal_data(); + }); + if (view.cursor_index().internal_data() == index.internal_data()) { + view.set_cursor({}, GUI::AbstractView::SelectionUpdate::None); + } + }); + break; } case Core::FileWatcherEvent::Type::MetadataModified: {