FLEX-35339 stop tool tip flashing on and off like mad when you mouse over it


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/c0d218f5
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/c0d218f5
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/c0d218f5

Branch: refs/heads/develop
Commit: c0d218f5bf0e83d2f82fa1979aad0ff09b6317f2
Parents: 549a10d
Author: Justin Mclean <jmcl...@apache.org>
Authored: Tue Jul 11 15:36:05 2017 +1000
Committer: Justin Mclean <jmcl...@apache.org>
Committed: Tue Jul 11 15:36:05 2017 +1000

----------------------------------------------------------------------
 .../apache/flex/html/accessories/ToolTipBead.as | 47 +++++++++++---------
 1 file changed, 25 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c0d218f5/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
index bdf0b68..b1f0620 100644
--- 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/accessories/ToolTipBead.as
@@ -18,26 +18,23 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.accessories
 {
-       
+
        import org.apache.flex.core.IBead;
        import org.apache.flex.core.IPopUpHost;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.IUIBase;
-       import org.apache.flex.core.UIBase;
-       import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        import org.apache.flex.events.MouseEvent;
-       import org.apache.flex.events.utils.MouseUtils;
        import org.apache.flex.geom.Point;
        import org.apache.flex.html.ToolTip;
        import org.apache.flex.utils.PointUtils;
        import org.apache.flex.utils.UIUtils;
-       
+
        /**
         *  The ToolTipBead class is a specialty bead that can be used with
         *  any control. The bead floats a string over a control if
      *  the user hovers over the control with a mouse.
-        *  
+        *
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
@@ -56,9 +53,9 @@ package org.apache.flex.html.accessories
                public function ToolTipBead()
                {
                }
-               
+
                private var _toolTip:String;
-               
+
                /**
                 *  The string to use as the toolTip.
                 *
@@ -75,12 +72,12 @@ package org.apache.flex.html.accessories
                {
             _toolTip = value;
                }
-               
+
                private var _strand:IStrand;
-               
+
                /**
                 *  @copy org.apache.flex.core.IBead#strand
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -92,32 +89,34 @@ package org.apache.flex.html.accessories
 
             IEventDispatcher(_strand).addEventListener(MouseEvent.MOUSE_OVER, 
rollOverHandler, false);
                }
-               
+
         private var tt:ToolTip;
         private var host:IPopUpHost;
-        
+
                /**
                 * @private
                 */
                protected function rollOverHandler( event:MouseEvent ):void
                {
-                       if (!toolTip)
+                       if (!toolTip || tt)
                                return;
 
             IEventDispatcher(_strand).addEventListener(MouseEvent.MOUSE_OUT, 
rollOutHandler, false);
-            
+
             var comp:IUIBase = _strand as IUIBase
             host = UIUtils.findPopUpHost(comp);
                        if (tt) host.removeElement(tt);
-                       
+
             tt = new ToolTip();
             tt.text = toolTip;
             var pt:Point = determinePosition(event, event.target);
             tt.x = pt.x;
             tt.y = pt.y;
             host.addElement(tt, false); // don't trigger a layout
+
+                       tt.addEventListener(MouseEvent.MOUSE_OUT, 
rollOutHandler, false);
                }
-               
+
                /**
                 * @private
                 * Determines the position of the toolTip.
@@ -129,16 +128,20 @@ package org.apache.flex.html.accessories
                        pt = PointUtils.localToGlobal(pt, comp);
                        return pt;
                }
-        
+
         /**
          * @private
          */
-        private function rollOutHandler( event:MouseEvent ):void
-        {      
-            if (tt) {
+        private function rollOutHandler(event:MouseEvent):void
+        {
+                       var comp:IUIBase = _strand as IUIBase;
+                       var outside:Boolean = event.clientX > comp.width || 
event.clientY > comp.height;
+            // check for outside otherwise tool tip itself with flash when you 
roll over it
+            if (tt && outside) {
                 host.removeElement(tt);
+                               tt = null;
                        }
-            tt = null;
         }
        }
 }
+

Reply via email to