                 throwEffect.stop();
                 snapContentScrollPosition();
             }
-
+            
             // Scroll the element into view
-            var delta:Point = layout.getScrollPositionDeltaToAnyElement(element);
+            
+            var delta:Point = layout.getScrollPositionDeltaToAnyElement(element, elementLocalBounds);
             
             if (delta)
             {
-                var eltBounds:Rectangle = layout.getChildElementBounds(element);
-                var focusThickness:Number = 0;
-                
                 viewport.horizontalScrollPosition += delta.x; 
                 viewport.verticalScrollPosition += delta.y;
                 
-                if (element is IStyleClient)
-                    focusThickness = IStyleClient(element).getStyle("focusThickness");
+                // We only care about focusThickness if we are positioning the whole element 
+                if (!elementLocalBounds)
+                {
+                    var eltBounds:Rectangle = layout.getChildElementBounds(element);
+                    var focusThickness:Number = 0;
                 
-                // Make sure that the focus ring is visible. Top and left sides have priority
-                if (focusThickness)
-                {
-                    if (viewport.verticalScrollPosition > eltBounds.top - focusThickness)
-                        viewport.verticalScrollPosition = eltBounds.top - focusThickness;
-                    else if (viewport.verticalScrollPosition + height < eltBounds.bottom + focusThickness)
-                        viewport.verticalScrollPosition = eltBounds.bottom + focusThickness - height;
+                    if (element is IStyleClient)
+                        focusThickness = IStyleClient(element).getStyle("focusThickness");
                     
-                    if (viewport.horizontalScrollPosition > eltBounds.left - focusThickness)
-                        viewport.horizontalScrollPosition = eltBounds.left - focusThickness;
-                    else if (viewport.horizontalScrollPosition + width < eltBounds.right + focusThickness)
-                        viewport.horizontalScrollPosition = eltBounds.right + focusThickness - width;
+                    // Make sure that the focus ring is visible. Top and left sides have priority
+                    if (focusThickness)
+                    {
+                        if (viewport.verticalScrollPosition > eltBounds.top - focusThickness)
+                            viewport.verticalScrollPosition = eltBounds.top - focusThickness;
+                        else if (viewport.verticalScrollPosition + height < eltBounds.bottom + focusThickness)
+                            viewport.verticalScrollPosition = eltBounds.bottom + focusThickness - height;
+                        
+                        if (viewport.horizontalScrollPosition > eltBounds.left - focusThickness)
+                            viewport.horizontalScrollPosition = eltBounds.left - focusThickness;
+                        else if (viewport.horizontalScrollPosition + width < eltBounds.right + focusThickness)
+                            viewport.horizontalScrollPosition = eltBounds.right + focusThickness - width;
+                    }
                 }
                 
-                if (viewport is UIComponent)
+                if (doValidateNow && viewport is UIComponent)
                     UIComponent(viewport).validateNow();
             }
         }

     *  @private 
     */
    mx_internal var preventThrows:Boolean = false;

    //--------------------------------------------------------------------------
    //
    //  Properties

            addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, 
                softKeyboardDeactivateHandler, false, 
                EventPriority.DEFAULT, true);  
            addEventListener(CaretBoundsChangeEvent.CARET_BOUNDS_CHANGE,
                caretBoundsChangeHandler);
        }
    }
    
