diff --git a/src/public/javascripts/services/context_menu.js b/src/public/javascripts/services/context_menu.js index d3ac95686..999abc28b 100644 --- a/src/public/javascripts/services/context_menu.js +++ b/src/public/javascripts/services/context_menu.js @@ -1,5 +1,7 @@ const $contextMenuContainer = $("#context-menu-container"); +let dateContextMenuOpenedMs = 0; + function initContextMenu(event, itemContainer, selectContextMenuItem) { event.stopPropagation(); @@ -55,6 +57,8 @@ function initContextMenu(event, itemContainer, selectContextMenuItem) { top = event.pageY - 10; } + dateContextMenuOpenedMs = Date.now(); + $contextMenuContainer.css({ display: "block", top: top, @@ -62,8 +66,18 @@ function initContextMenu(event, itemContainer, selectContextMenuItem) { }).addClass("show"); } -$(document).click(() => $contextMenuContainer.hide()); +$(document).click(() => hideContextMenu()); + +function hideContextMenu() { + // this date checking comes from change in FF66 - https://github.com/zadam/trilium/issues/468 + // "contextmenu" event also triggers "click" event which depending on the timing can close just opened context menu + // we might filter out right clicks, but then it's better if even right clicks close the context menu + if (Date.now() - dateContextMenuOpenedMs > 300) { + $contextMenuContainer.hide(); + } +} export default { - initContextMenu + initContextMenu, + hideContextMenu } \ No newline at end of file diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index ebb7f9922..4db2f0617 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -417,6 +417,9 @@ function initFancyTree(tree) { const node = data.node; const noteId = node.data.noteId; + // click event won't propagate so let's close context menu manually + contextMenuWidget.hideContextMenu(); + setCurrentNotePathToHash(node); noteDetailService.switchToNote(noteId);