Index: src/webapp/components/reorderer/js/Reorderer.js =================================================================== --- src/webapp/components/reorderer/js/Reorderer.js (revision 9805) +++ src/webapp/components/reorderer/js/Reorderer.js (working copy) @@ -211,6 +211,7 @@ } } else if (noModifier(evt)) { + item.blur(); $(relativeItem.element).focus(); } return false; Index: src/webapp/framework/core/js/jquery.keyboard-a11y.js =================================================================== --- src/webapp/framework/core/js/jquery.keyboard-a11y.js (revision 9805) +++ src/webapp/framework/core/js/jquery.keyboard-a11y.js (working copy) @@ -334,6 +334,9 @@ var selectableFocusHandler = function(selectionContext) { return function(evt) { + // newer browsers (FF 3.6, Webkit 4) have a form of "bug" in that they will go bananas + // on attempting to move focus off an element which has tabindex dynamically set to -1. + $(evt.target).fluid("tabindex", 0); selectElement(evt.target, selectionContext); // Force focus not to bubble on some browsers. @@ -343,6 +346,7 @@ var selectableBlurHandler = function(selectionContext) { return function(evt) { + $(evt.target).fluid("tabindex", selectionContext.options.selectablesTabindex); unselectElement(evt.target, selectionContext); // Force blur not to bubble on some browsers. @@ -364,6 +368,9 @@ }; var prepareShift = function(selectionContext) { + // part of FLUID-3590 fix. To add insult to injury, the "new broken browsers" will not + // fire blur when programmatically transferring focus + selectionContext.selectedElement().blur(); unselectElement(selectionContext.selectedElement(), selectionContext); if (selectionContext.activeItemIndex === NO_SELECTION) { selectionContext.activeItemIndex = -1;