diff --git a/docs/en_US/release_notes_5_2.rst b/docs/en_US/release_notes_5_2.rst index 8ddf82f35..9502834dd 100644 --- a/docs/en_US/release_notes_5_2.rst +++ b/docs/en_US/release_notes_5_2.rst @@ -19,8 +19,10 @@ Bug fixes ********* | `Issue #5519 `_ - Ensure that the query tool tab should be closed after server disconnection when auto-commit/auto-rollback is set to false. +| `Issue #5908 `_ - Fixed an issue where shortcut keys are not working with manage macro. | `Issue #6076 `_ - Fixed an issue where correct error not thrown while importing servers and JSON file has incorrect/insufficient keys. | `Issue #6082 `_ - Ensure that the user should not be to change the connection when a long query is running. +| `Issue #6161 `_ - Fixed an issue where the cursor shifts its focus to the wrong window for all the query tool related model dialogs. | `Issue #6220 `_ - Corrected the syntax for 'CREATE TRIGGER', use 'EXECUTE FUNCTION' instead of 'EXECUTE PROCEDURE' from v11 onwards. | `Issue #6274 `_ - Ensure that the strings in the LDAP auth module are translatable. | `Issue #6293 `_ - Fixed an issue where the procedure creation is failed when providing the Volatility option. diff --git a/web/pgadmin/misc/file_manager/static/js/create_dialogue.js b/web/pgadmin/misc/file_manager/static/js/create_dialogue.js index fa08ea560..e3b269f00 100644 --- a/web/pgadmin/misc/file_manager/static/js/create_dialogue.js +++ b/web/pgadmin/misc/file_manager/static/js/create_dialogue.js @@ -191,4 +191,4 @@ module.exports = Alertify.dialog('createModeDlg', function() { } }, }; -}, true, 'fileSelectionDlg'); +}, false, 'fileSelectionDlg'); diff --git a/web/pgadmin/static/js/sqleditor/macro.js b/web/pgadmin/static/js/sqleditor/macro.js index 74c7dab2d..4af0f3af5 100644 --- a/web/pgadmin/static/js/sqleditor/macro.js +++ b/web/pgadmin/static/js/sqleditor/macro.js @@ -63,6 +63,17 @@ let MacroDialog = { className: 'btn btn-primary fa fa-save pg-alertify-button', 'data-btn-name': 'ok', }], + focus: { + element: function(){ + /* + returning false will focus nothing, but it will make + contents behind the modal accessible via Tab key, + so focus the dialog itself instead. + */ + return $(this.elements.dialog).find('.header-icon-cell button')[0]; + }, + select: true, + }, // Set options for dialog options: { title: title, diff --git a/web/pgadmin/static/js/sqleditor/new_connection_dialog.js b/web/pgadmin/static/js/sqleditor/new_connection_dialog.js index 9fede2b07..68f1ba818 100644 --- a/web/pgadmin/static/js/sqleditor/new_connection_dialog.js +++ b/web/pgadmin/static/js/sqleditor/new_connection_dialog.js @@ -82,6 +82,17 @@ let NewConnectionDialog = { 'data-btn-name': 'ok', }, ], + focus: { + element: function(){ + /* + returning false will focus nothing, but it will make + contents behind the modal accessible via Tab key, + so focus the dialog itself instead. + */ + return $(this.elements.dialog).find('.new-connection-dialog .nav-link.active.show'); + }, + select: true, + }, // Set options for dialog options: { title: title, diff --git a/web/pgadmin/static/js/sqleditor_utils.js b/web/pgadmin/static/js/sqleditor_utils.js index e51cab57b..332bdf133 100644 --- a/web/pgadmin/static/js/sqleditor_utils.js +++ b/web/pgadmin/static/js/sqleditor_utils.js @@ -8,8 +8,8 @@ ////////////////////////////////////////////////////////////////////////// // This file contains common utilities functions used in sqleditor modules -define(['jquery', 'underscore', 'sources/gettext', 'sources/url_for'], - function ($, _, gettext, url_for) { +define(['jquery', 'underscore', 'sources/gettext', 'sources/url_for', 'pgadmin.alertifyjs'], + function ($, _, gettext, url_for, alertify) { var sqlEditorUtils = { /* Reference link http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript * Modified as per requirement. @@ -236,6 +236,23 @@ define(['jquery', 'underscore', 'sources/gettext', 'sources/url_for'], }; } }, + + isModalOpen: function(dialog_list) { + /* check the modals inside the sqleditor are open or not */ + if(Array.isArray(dialog_list)) { + for(let d of dialog_list) { + try { + if(alertify.dialog(d) && alertify.dialog(d).isOpen()) + return true; + } + catch (err) { + // Do nothing + console.warn(err.stack || err); + } + } + } + return false; + }, }; return sqlEditorUtils; }); diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js index 5da66369d..b5503255c 100644 --- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js +++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js @@ -506,13 +506,23 @@ define('tools.querytool', [ transId = self.handler.transId; if (!$container.hasClass('wcPanelTabContentHidden')) { - setTimeout(function () { - self.handler.gridView.query_tool_obj.focus(); - }, 200); - // Trigger an event to update connection status flag - pgBrowser.Events.trigger( - 'pgadmin:query_tool:panel:gain_focus:' + transId - ); + + let modal_list = ['fileSelectionDlg', 'createModeDlg', + 'confirm', 'alert', 'confirmSave', 'newConnectionDialog', + 'macroDialog']; + + /* check the modals inside the sqleditor are open, if not, + focus on the editor instead. */ + if(!SqlEditorUtils.isModalOpen(modal_list)) { + setTimeout(function () { + self.handler.gridView.query_tool_obj.focus(); + }, 200); + + // Trigger an event to update connection status flag + pgBrowser.Events.trigger( + 'pgadmin:query_tool:panel:gain_focus:' + transId + ); + } } });