diff --git a/apps/client/src/menus/context_menu.ts b/apps/client/src/menus/context_menu.ts index 4411db9dc..ef477c576 100644 --- a/apps/client/src/menus/context_menu.ts +++ b/apps/client/src/menus/context_menu.ts @@ -62,7 +62,7 @@ class ContextMenu { if (this.isMobile) { this.$cover.on("click", () => this.hide()); } else { - $(document).on("click", (e) => this.hide()); + $(document).on("mouseup", (e) => this.hide()); } } @@ -225,9 +225,10 @@ class ContextMenu { $item.on("mouseup", (e) => { // Prevent submenu from failing to expand on mobile if (!this.isMobile || !("items" in item && item.items)) { - e.stopPropagation(); // Hide the content menu on mouse up to prevent the mouse event from propagating to the elements below. - this.hide(); + if (("command" in item) || ("handler" in item)) { + this.hide(); + } return false; } }); diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts index 248bf0a3a..2bbee7b36 100644 --- a/apps/client/src/widgets/note_tree.ts +++ b/apps/client/src/widgets/note_tree.ts @@ -219,21 +219,22 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { this.$tree = this.$widget.find(".tree"); this.$treeActions = this.$widget.find(".tree-actions"); - this.$tree.on("mousedown", ".unhoist-button", () => hoistedNoteService.unhoist()); - this.$tree.on("mousedown", ".refresh-search-button", (e) => this.refreshSearch(e)); - this.$tree.on("mousedown", ".add-note-button", (e) => { - const node = $.ui.fancytree.getNode(e as unknown as Event); - const parentNotePath = treeService.getNotePath(node); + this.$tree.on("mousedown", (e: JQuery.MouseDownEvent) => { + const target = e.target as HTMLElement; + if (e.button !== 0) return; - noteCreateService.createNote(parentNotePath, { - isProtected: node.data.isProtected - }); - }); - - this.$tree.on("mousedown", ".enter-workspace-button", (e) => { - const node = $.ui.fancytree.getNode(e as unknown as Event); - - this.triggerCommand("hoistNote", { noteId: node.data.noteId }); + if (target.classList.contains("unhoist-button")) { + hoistedNoteService.unhoist(); + } else if (target.classList.contains("refresh-search-button")) { + this.refreshSearch(e); + } else if (target.classList.contains("add-note-button")) { + const node = $.ui.fancytree.getNode(e as unknown as Event); + const parentNotePath = treeService.getNotePath(node); + noteCreateService.createNote(parentNotePath, { isProtected: node.data.isProtected }); + } else if (target.classList.contains("enter-workspace-button")) { + const node = $.ui.fancytree.getNode(e as unknown as Event); + this.triggerCommand("hoistNote", { noteId: node.data.noteId }); + } }); // fancytree doesn't support middle click, so this is a way to support it