diff --git a/web_src/js/components/ViewFileTreeItem.vue b/web_src/js/components/ViewFileTreeItem.vue index ce019e655f..48f81b0f32 100644 --- a/web_src/js/components/ViewFileTreeItem.vue +++ b/web_src/js/components/ViewFileTreeItem.vue @@ -27,9 +27,10 @@ const doLoadChildren = async () => { }; const onItemClick = (e: MouseEvent) => { - // only handle the click event with page partial reloading if the user didn't press any special key - // let browsers handle special keys like "Ctrl+Click" - if (!isPlainClick(e)) return; + // only handle the click event with partial page reloading if both + // - the user didn't press any special key like "Ctrl+Click" (which may have custom browser behavior) + // - the editor/commit form isn't dirty (a full page reload shows a confirmation dialog if the form contains unsaved changes) + if (!isPlainClick(e) || document.querySelector('.repo-view-content .form.dirty')) return; e.preventDefault(); if (props.item.entryMode === 'tree') doLoadChildren(); store.navigateTreeView(props.item.fullPath);