diff --git a/web/pgadmin/browser/static/js/MainMenuFactory.js b/web/pgadmin/browser/static/js/MainMenuFactory.js index 39d6ff0badc..0e7461040f3 100644 --- a/web/pgadmin/browser/static/js/MainMenuFactory.js +++ b/web/pgadmin/browser/static/js/MainMenuFactory.js @@ -23,6 +23,21 @@ const MAIN_MENUS = [ export default class MainMenuFactory { static electronCallbacks = {}; + // Use to convert shortcut to accelerator for electron. + static convertShortcutToAccelerator({ control, meta, shift, alt, key } = {}) { + // Store active modifier keys into an array. + const mods = [ + control && 'Ctrl', + meta && 'Cmd', + shift && 'Shift', + alt && 'Alt', + ].filter(Boolean); // Remove any falsy values + // Get the actual key character and convert to uppercase. + const k = key?.char?.toUpperCase(); + if (!k) return; + // Combine modifiers and key into a single string. + return [...mods, k].join('+'); + } static toElectron() { // we support 2 levels of submenu @@ -34,10 +49,12 @@ export default class MainMenuFactory { MainMenuFactory.electronCallbacks[smName] = sm.callback; return { ...sm.serialize(), + accelerator: MainMenuFactory.convertShortcutToAccelerator(sm.shortcut), submenu: sm.getMenuItems()?.map((smsm)=>{ MainMenuFactory.electronCallbacks[`${smName}_${smsm.name}`] = smsm.callback; return { ...smsm.serialize(), + accelerator: MainMenuFactory.convertShortcutToAccelerator(smsm.shortcut), }; }) }; @@ -123,6 +140,7 @@ export default class MainMenuFactory { static subscribeShortcutChanges() { MainMenuFactory.updateShortcutsFromPreferences(usePreferences.getState()); usePreferences.subscribe(MainMenuFactory.updateShortcutsFromPreferences); + MainMenuFactory.createMainMenus(); } static enableDisableMenus(item) { diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js index 3e734eb1c2a..3510524a132 100644 --- a/web/pgadmin/browser/static/js/browser.js +++ b/web/pgadmin/browser/static/js/browser.js @@ -375,6 +375,7 @@ define('pgadmin.browser', [ _m.callback = () => { showQuickSearch(); }; + _m.shortcut_preference =['browser', 'open_quick_search']; } return { diff --git a/web/pgadmin/static/js/components/Menu.jsx b/web/pgadmin/static/js/components/Menu.jsx index b92da496563..aef6d36a127 100644 --- a/web/pgadmin/static/js/components/Menu.jsx +++ b/web/pgadmin/static/js/components/Menu.jsx @@ -85,7 +85,6 @@ export const PgMenuItem = (({hasCheck=false, checked=false, accesskey, shortcut,