      */
     public function getHorizontalScrollPositionDelta(scrollUnit:uint):Number
     {
-        // TBD: replace provisional implementation
-        var scrollR:Rectangle = scrollRect;
-        if (!scrollR)
-            return 0;
-            
-        var maxDelta:Number = contentWidth - scrollR.width - scrollR.x;
-        var minDelta:Number = -scrollR.x; 
-            
-        switch (scrollUnit)
-        {
-            case ScrollUnit.UP:
-                return (scrollR.x <= 0) ? 0 : -1;
-                
-            case ScrollUnit.DOWN:
-                return (scrollR.x >= maxDelta) ? 0 : 1;
-                
-            case ScrollUnit.PAGE_LEFT:
-                return Math.max(minDelta, -scrollR.width);
-                
-            case ScrollUnit.PAGE_RIGHT:
-                return Math.min(maxDelta, scrollR.width);
-                
-            case ScrollUnit.HOME: 
-                return minDelta;
-                
-            case ScrollUnit.END: 
-                return maxDelta;
-                
-            default:
-                return 0;
-        }       
+        // The scroller's keyDown handler is activated before TLF's keyDown
+        // handler which recognizes many more keys and key combinations than
+        // the scroller does.  Tell the scroller there is no delta and then
+        // let TLF handle the scrolling.  When TLF scrolls, it will call our
+        // scroll handler which will update horizontalScrollPosition.  The
+        // scroller is bound to this so it will get notified and do the
+        // appropriate adjustments to the slider, etc.  
+        
+        return 0;
     }
     
     //----------------------------------

            
            invalidateDisplayList();
        } 
        else if (event.status == InlineGraphicElementStatus.ERROR)
        {
            if (event.errorEvent is IOErrorEvent)
                trace(IOErrorEvent(event.errorEvent).text);
        }
    }    
}


        // which causes binding to fire which repeats the process).
        if (value == text)
            return;
        
        // If we have focus, then we need to immediately create a TextFlow so
        // the interaction manager will be created and editing/selection can
        // be done without having to mouse click or mouse hover over this field.
        // Normally this is done in our focusIn handler by making sure there
        // is a selection.    
        if (getFocus() == this)
        {
            content = value;
            return;
        }
                    
        // Setting 'text' temporarily causes 'content' to become null.
        // Later, after the 'text' has been committed into the TextFlow,
        // getting 'content' will return the TextFlow.
