             updateDataTip(dataTipInstance, dataTipInitialPosition);
         }
     }
+    
+    /**
+     *  @private
+     */
+    private function handleMousePoint(p:Point):void
+    {
+        var newValue:Number = pointToValue(p.x - clickOffset.x, p.y - clickOffset.y);
+        newValue = nearestValidValue(newValue, snapInterval);
+        
+        if (newValue != pendingValue)
+        {
+            dispatchEvent(new TrackBaseEvent(TrackBaseEvent.THUMB_DRAG));
+            if (getStyle("liveDragging") === true)
+            {
+                setValue(newValue);
+                dispatchEvent(new Event(Event.CHANGE));
+            }
+            else
+            {
+                pendingValue = newValue;
+            }
+        }
+        
+        if (dataTipInstance && showDataTip)
+        { 
+            dataTipInstance.data = formatDataTipText(pendingValue);
+            
+            // Force the dataTip to render so that we have the correct size since
+            // updateDataTip might need the size
+            var tipAsUIComponent:UIComponent = dataTipInstance as UIComponent; 
+            if (tipAsUIComponent)
+            {
+                tipAsUIComponent.validateNow();
+                tipAsUIComponent.setActualSize(tipAsUIComponent.getExplicitOrMeasuredWidth(),tipAsUIComponent.getExplicitOrMeasuredHeight());
+            }
+
+            updateDataTip(dataTipInstance, dataTipInitialPosition);
+        }
+    }
 
     /**
      *  @private

     */
    private var clickOffset:Point;  
        
    //--------------------------------------------------------------------------
    //
    //  Overridden properties

    //  Overridden event handlers
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     */
