From 49095ccba6147b0e814afd1d9676e82785aab9b5 Mon Sep 17 00:00:00 2001 From: Rahul Shirsat Date: Fri, 9 Apr 2021 12:41:13 +0530 Subject: [PATCH] =?UTF-8?q?1)=20Fixed=20an=20issue=20where=20shortcut=20ke?= =?UTF-8?q?ys=20are=20not=20working=20with=20manage=20macro.=20Fixes=20#59?= =?UTF-8?q?08=202)=20Fixed=20an=20issue=20where=20the=20cursor=20shifts=20?= =?UTF-8?q?its=20focus=20to=20the=20wrong=20window=20for=20all=20the=20que?= =?UTF-8?q?ry=20tool=20related=20model=20dialogs.=20Fixes=C2=A0#6161?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en_US/release_notes_5_2.rst | 2 ++ .../file_manager/static/js/create_dialogue.js | 2 +- web/pgadmin/static/js/sqleditor/macro.js | 11 +++++++++ .../js/sqleditor/new_connection_dialog.js | 11 +++++++++ web/pgadmin/static/js/sqleditor_utils.js | 21 ++++++++++++++-- .../tools/sqleditor/static/js/sqleditor.js | 24 +++++++++++++------ 6 files changed, 61 insertions(+), 10 deletions(-) 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 + ); + } } });