reduce flickering while hoisted

This commit is contained in:
zadam 2023-11-06 23:11:57 +01:00
parent 40fb6aa168
commit b700f069fe

View File

@ -833,7 +833,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
} }
}); });
await this.filterHoistedBranch(); await this.filterHoistedBranch(true);
// don't activate the active note, see discussion in https://github.com/zadam/trilium/issues/3664 // don't activate the active note, see discussion in https://github.com/zadam/trilium/issues/3664
} }
@ -1021,7 +1021,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
} }
} }
this.filterHoistedBranch(); this.filterHoistedBranch(false);
} }
async refreshSearch(e) { async refreshSearch(e) {
@ -1080,7 +1080,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
} }
}, false); }, false);
this.filterHoistedBranch(); this.filterHoistedBranch(true);
}, 600 * 1000); }, 600 * 1000);
} }
@ -1112,7 +1112,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
if (refreshCtx.noteIdsToReload.size > 0 || refreshCtx.noteIdsToUpdate.size > 0) { if (refreshCtx.noteIdsToReload.size > 0 || refreshCtx.noteIdsToUpdate.size > 0) {
// workaround for https://github.com/mar10/fancytree/issues/1054 // workaround for https://github.com/mar10/fancytree/issues/1054
this.filterHoistedBranch(); this.filterHoistedBranch(true);
} }
} }
@ -1371,7 +1371,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
await this.tree.reload([rootNode]); await this.tree.reload([rootNode]);
}); });
await this.filterHoistedBranch(); await this.filterHoistedBranch(true);
if (activeNotePath) { if (activeNotePath) {
const node = await this.getNodeFromPath(activeNotePath, true); const node = await this.getNodeFromPath(activeNotePath, true);
@ -1384,16 +1384,25 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
async hoistedNoteChangedEvent({ntxId}) { async hoistedNoteChangedEvent({ntxId}) {
if (this.isNoteContext(ntxId)) { if (this.isNoteContext(ntxId)) {
await this.filterHoistedBranch(); await this.filterHoistedBranch(true);
} }
} }
async filterHoistedBranch() { async filterHoistedBranch(forceUpdate = false) {
if (!this.noteContext) { if (!this.noteContext) {
return; return;
} }
const hoistedNotePath = await treeService.resolveNotePath(this.noteContext.hoistedNoteId); const hoistedNotePath = await treeService.resolveNotePath(this.noteContext.hoistedNoteId);
if (!forceUpdate && this.lastFilteredHoistedNotePath === hoistedNotePath) {
// no need to re-filter if the hoisting did not change
// (helps with flickering on simple note change with large subtrees)
return;
}
this.lastFilteredHoistedNotePath = hoistedNotePath;
await this.getNodeFromPath(hoistedNotePath); await this.getNodeFromPath(hoistedNotePath);
if (this.noteContext.hoistedNoteId === 'root') { if (this.noteContext.hoistedNoteId === 'root') {