diff --git a/horizon/static/horizon/js/horizon.accordion_nav.js b/horizon/static/horizon/js/horizon.accordion_nav.js index d4c8c0c258..75cfc0345f 100644 --- a/horizon/static/horizon/js/horizon.accordion_nav.js +++ b/horizon/static/horizon/js/horizon.accordion_nav.js @@ -1,5 +1,9 @@ horizon.addInitFunction(function() { var allPanelGroupBodies = $('.nav_accordion > dd > div > ul'); + // In case the event was generated by clicking any mouse button, + // the normalized codes are matched according to http://api.jquery.com/event.which/ + var MOUSE_LBUTTON_CODE_NORMALIZED = 1; + var MOUSE_WHEEL_CODE_NORMALIZED = 2; // mark the active panel group var activePanel = $('.nav_accordion > dd > div > ul > li > a.active'); @@ -76,8 +80,14 @@ horizon.addInitFunction(function() { }); // panel selection - $('.nav_accordion > dd > div > ul > li > a').click(function() { - horizon.modals.modal_spinner(gettext("Loading")); + $('.nav_accordion > dd > div > ul > li > a').click(function(ev) { + // NOTE(tsufiev): prevent infinite 'Loading' spinner when opening link + // in the other browser tab with mouse wheel or mouse lbutton + modifier + if ( ev.which !== MOUSE_WHEEL_CODE_NORMALIZED && + !( ev.which === MOUSE_LBUTTON_CODE_NORMALIZED && + ( ev.shiftKey || ev.ctrlKey ) ) ) { + horizon.modals.modal_spinner(gettext("Loading")); + } }); });