From 64ee5f87341d02ae2cd590b0015420c3787286d2 Mon Sep 17 00:00:00 2001 From: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com> Date: Tue, 14 Apr 2026 10:58:15 +0530 Subject: [PATCH 1/2] fix(file-browser): sync open folder tree after delete --- src/lib/openFolder.js | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/lib/openFolder.js b/src/lib/openFolder.js index b286535ac..599467e41 100644 --- a/src/lib/openFolder.js +++ b/src/lib/openFolder.js @@ -586,7 +586,7 @@ function execOperation(type, action, url, $target, name) { recents.removeFile(url); if (helpers.isFile(type)) { await fsOperation(url).delete(); - $target.remove(); + removeEntryFromOpenFolder(url); const file = editorManager.getFile(url, "uri"); if (file) file.uri = null; editorManager.onupdate("delete-file"); @@ -617,7 +617,7 @@ function execOperation(type, action, url, $target, name) { } recents.removeFolder(url); helpers.updateUriOfAllActiveFiles(url, null); - $target.parentElement.remove(); + removeEntryFromOpenFolder(url); editorManager.onupdate("delete-folder"); editorManager.emit("update", "delete-folder"); } @@ -1000,6 +1000,34 @@ function getLoadedFileTree($el) { ); } +/** + * Remove matching rendered entries from expanded folder views. + * This keeps FileTree's in-memory state aligned with the rendered tree. + * @param {string} entryUrl + */ +function removeEntryFromOpenFolder(entryUrl) { + const filesApp = sidebarApps.get("files"); + const $els = Array.from(filesApp.getAll(`[data-url="${entryUrl}"]`)); + + $els.forEach(($el) => { + const ownerTree = + $el?.parentElement?._fileTree || + $el?.parentElement?.parentElement?._fileTree; + + if (ownerTree) { + ownerTree.removeEntry(entryUrl); + return; + } + + const type = $el.dataset.type; + if (helpers.isFile(type)) { + $el.remove(); + } else { + $el.parentElement?.remove(); + } + }); +} + /** * Update matching expanded folder views with a new entry. * @param {string} parentUrl @@ -1136,16 +1164,7 @@ openFolder.removeItem = (url) => { return; } - const filesApp = sidebarApps.get("files"); - const $el = filesApp.getAll(`[data-url="${url}"]`); - Array.from($el).forEach(($el) => { - const type = $el.dataset.type; - if (helpers.isFile(type)) { - $el.remove(); - } else { - $el.parentElement.remove(); - } - }); + removeEntryFromOpenFolder(url); }; openFolder.removeFolders = (url) => { From 43bd8e7531b791937c7d762910ca560810ceeed5 Mon Sep 17 00:00:00 2001 From: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com> Date: Tue, 14 Apr 2026 11:05:51 +0530 Subject: [PATCH 2/2] fix --- src/lib/openFolder.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/openFolder.js b/src/lib/openFolder.js index 599467e41..11add0d1a 100644 --- a/src/lib/openFolder.js +++ b/src/lib/openFolder.js @@ -1007,7 +1007,9 @@ function getLoadedFileTree($el) { */ function removeEntryFromOpenFolder(entryUrl) { const filesApp = sidebarApps.get("files"); - const $els = Array.from(filesApp.getAll(`[data-url="${entryUrl}"]`)); + const $els = Array.from( + filesApp.getAll(`[data-url="${CSS.escape(entryUrl)}"]`), + ); $els.forEach(($el) => { const ownerTree =