diff --git a/src/public/javascripts/services/branches.js b/src/public/javascripts/services/branches.js index 36bf50778..aa4fdffa0 100644 --- a/src/public/javascripts/services/branches.js +++ b/src/public/javascripts/services/branches.js @@ -3,6 +3,7 @@ import utils from './utils.js'; import server from './server.js'; import infoService from "./info.js"; import treeCache from "./tree_cache.js"; +import treeUtils from "./tree_utils.js"; import hoistedNoteService from "./hoisted_note.js"; import noteDetailService from "./note_detail.js"; @@ -105,9 +106,10 @@ async function deleteNodes(nodes) { next = nodes[0].getParent(); } + let activeNotePath = null; + if (next) { - // activate next element after this one is deleted so we don't lose focus - next.setActive(); + activeNotePath = await treeUtils.getNotePath(next); } await treeService.loadTreeCache(); @@ -119,7 +121,15 @@ async function deleteNodes(nodes) { } for (const parentNoteId of parentNoteIds) { - treeService.reloadNote(parentNoteId); + await treeService.reloadNote(parentNoteId); + } + + // activate after all the reloading + if (activeNotePath) { + treeService.focusTree(); + + const node = await treeService.activateNote(activeNotePath); + node.setFocus(true); } infoService.showMessage("Note(s) has been deleted."); diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index 771659623..4b1c383fc 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -516,11 +516,15 @@ async function collapseTree(node = null) { node.visit(node => node.setExpanded(false)); } +function focusTree() { + $tree.find('.fancytree-container').focus(); +} + async function scrollToActiveNote() { const activeContext = noteDetailService.getActiveTabContext(); if (activeContext && activeContext.notePath) { - $tree.find('.fancytree-container').focus(); + focusTree(); const node = await expandToNote(activeContext.notePath); @@ -814,5 +818,6 @@ export default { expandToNote, getNodeFromPath, resolveNotePath, - getSomeNotePath + getSomeNotePath, + focusTree }; \ No newline at end of file