diff --git a/web/pgadmin/static/js/tree/tree.js b/web/pgadmin/static/js/tree/tree.js index 984d247d3..aa0a57057 100644 --- a/web/pgadmin/static/js/tree/tree.js +++ b/web/pgadmin/static/js/tree/tree.js @@ -371,6 +371,27 @@ export class Tree { } }.bind(this)); this.aciTreeApi = $treeJQuery.aciTree('api'); + + /* Ctrl + Click will trigger context menu. Select the node when Ctrl+Clicked. + * When the context menu is visible, the tree should lose focus + * to use context menu with keyboard. Otherwise, the tree functions + * overrides the keyboard events. + */ + let contextHandler = (ev)=>{ + let treeItem = this.aciTreeApi.itemFrom(ev.target); + if(treeItem.length) { + if(ev.ctrlKey) { + this.aciTreeApi.select(treeItem); + } + $(treeItem).on('contextmenu:visible', ()=>{ + $(treeItem).trigger('blur'); + $(treeItem).off('contextmenu:visible'); + }); + } + }; + $treeJQuery + .off('mousedown', contextHandler) + .on('mousedown', contextHandler); } /**