diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js index 81afb051d80..801e4781f5c 100644 --- a/web/pgadmin/browser/static/js/browser.js +++ b/web/pgadmin/browser/static/js/browser.js @@ -198,6 +198,7 @@ define('pgadmin.browser', [ obj.Events.on('pgadmin:browser:tree:update', obj.onUpdateTreeNode.bind(obj)); obj.Events.on('pgadmin:browser:tree:refresh', obj.onRefreshTreeNodeReact.bind(obj)); obj.Events.on('pgadmin-browser:tree:loadfail', obj.onLoadFailNode.bind(obj)); + obj.Events.on('pgadmin:browser:tree:disable_select', obj.disableTreeSelection.bind(obj)); obj.bind_beforeunload(); /* User UI activity */ @@ -1650,6 +1651,10 @@ define('pgadmin.browser', [ }, + disableTreeSelection: function(_disable) { + pgBrowser.disable_tree_select = _disable; + }, + editor_shortcut_keys: { // Autocomplete sql command 'Ctrl-Space': 'autocomplete', diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js index e99c072b1d1..36a1c8c8eaa 100644 --- a/web/pgadmin/browser/static/js/node.js +++ b/web/pgadmin/browser/static/js/node.js @@ -784,12 +784,12 @@ define('pgadmin.browser.node', [ if (first_child._loaded) { tree.open(first_child); - tree.select(first_child); + !pgBrowser['disable_tree_select'] && tree.select(first_child); } else { const openSoleItem = setInterval(() => { if (first_child._loaded) { tree.open(first_child); - tree.select(first_child); + !pgBrowser['disable_tree_select'] && tree.select(first_child); clearSoleItemInterval(); } }, 200); @@ -800,7 +800,7 @@ define('pgadmin.browser.node', [ } else if(tree.children(item).length == 1) { const first_child = tree.first(item); - tree.select(first_child); + !pgBrowser['disable_tree_select'] && tree.select(first_child); } pgBrowser.Events.trigger('pgadmin:browser:tree:update-tree-state', item); diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js index 6e4454f73bf..483fcbe124e 100644 --- a/web/pgadmin/browser/templates/browser/js/utils.js +++ b/web/pgadmin/browser/templates/browser/js/utils.js @@ -72,6 +72,10 @@ define('pgadmin.browser.utils', /* Enable server password exec command */ pgAdmin['enable_server_passexec_cmd'] = '{{enable_server_passexec_cmd}}'; + /* Enable tree.select of all places by default */ + pgBrowser['disable_tree_select'] = false; + + // Define list of nodes on which Query tool option doesn't appears let unsupported_nodes = pgAdmin.unsupported_nodes = [ 'server_group', 'server', 'coll-tablespace', 'tablespace', diff --git a/web/pgadmin/static/js/helpers/Layout/index.jsx b/web/pgadmin/static/js/helpers/Layout/index.jsx index fd86888781d..b347c0930d1 100644 --- a/web/pgadmin/static/js/helpers/Layout/index.jsx +++ b/web/pgadmin/static/js/helpers/Layout/index.jsx @@ -13,6 +13,7 @@ import PropTypes from 'prop-types'; import EventBus from '../EventBus'; import getApiInstance from '../../api_instance'; import url_for from 'sources/url_for'; +import pgAdmin from 'sources/pgadmin'; import { PgIconButton } from '../../components/Buttons'; import CloseIcon from '@mui/icons-material/CloseRounded'; import gettext from 'sources/gettext'; @@ -192,6 +193,11 @@ export class LayoutDocker { })], }, null, 'float'); } + if (panelData?.id == 'id-search-objects') { + // Disable the tree.select from all other places as it is clashing with + // the tree.select() in tree.findNodeWithToggle() of Search objects module. + pgAdmin.Browser.Events.trigger('pgadmin:browser:tree:disable_select', true); + } } isTabOpen(panelId) { @@ -342,6 +348,11 @@ function DialogClose({panelData}) { } size="xs" noBorder onClick={()=>{ layoutDocker.close(panelData.activeId); + if (panelData?.activeId == 'id-search-objects') { + // Enable the tree.select of all other places after closing of Search Objects dialog as it + // is clashing with the tree.select() in tree.findNodeWithToggle() of Search objects module. + pgAdmin.Browser.Events.trigger('pgadmin:browser:tree:disable_select', false); + } }} style={{marginRight: '-4px'}}/> ); diff --git a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js index 4bd58379562..99a70fbd597 100644 --- a/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js +++ b/web/pgadmin/static/js/tree/pgadmin_tree_save_state.js @@ -362,7 +362,7 @@ _.extend(pgBrowser.browserTreeState, { if (tmpTreeData && 'selected' in tmpTreeData && selectedItem in tmpTreeData['selected']) { if (tmpTreeData['selected'][selectedItem] == data.id) { this.is_selected = true; - pgBrowser.tree.select(item, true, 'center'); + !pgBrowser['disable_tree_select'] && pgBrowser.tree.select(item, true, 'center'); } } }