Author: dandre
Date: Sat Nov  2 19:14:35 2013
New Revision: 4651

Log:
try to improve popup location.

Modified:
   trunk/AncestrisCore/modules.views.tree/src/genj/tree/TreeView.java

Modified: trunk/AncestrisCore/modules.views.tree/src/genj/tree/TreeView.java
==============================================================================
--- trunk/AncestrisCore/modules.views.tree/src/genj/tree/TreeView.java  
(original)
+++ trunk/AncestrisCore/modules.views.tree/src/genj/tree/TreeView.java  Sat Nov 
 2 19:14:35 2013
@@ -935,35 +935,54 @@
          * fake set tt text to let tooltip manager hide or show tt
          * the get ttlocation must return null if no entity can be found. if 
not tt show a blank component
          */
-        String tttext = null;
+        private Entity oldTTEntity = null;
         @Override
         public String getToolTipText(MouseEvent event) {
             if (!showPopup()){
-                tttext = null;
+                oldTTEntity = null;
                 return null;
             }
-            Point pos = TreeView.this.getMousePosition();
-            Entity entity = null;
-            if (pos != null)
-                entity = getEntityAt(pos);
-            tt.setEntity(entity);
-            if (entity == null) {
-                tttext = null;
-                return null;
+            Entity entity = getEntityForEvent(event);
+            if (entity != oldTTEntity){
+                ttPosition = null;
+                oldTTEntity = entity;
             }
-            tttext = entity.getId();
-            return tttext;
+            tt.setEntity(oldTTEntity);
+            if (oldTTEntity == null)
+                return null;
+            else
+                return oldTTEntity.getId();
+        }
+        
+        /**
+         * Helper to find entity for a MouseEvent position in Content 
coordinate
+         * @param event
+         * @return Entity
+         */
+        private Entity getEntityForEvent(MouseEvent event){
+            // check node
+            Entity entity = null;
+            Point p = view2model(event.getPoint());
+            Object content = model.getContentAt(p.x, p.y);
+            // nothing?
+            if (content != null && content instanceof Entity) {
+                entity = (Entity) content;
+            }            
+            return entity;
         }
 
+        private Point ttPosition = null;
         @Override
         public Point getToolTipLocation(MouseEvent event) {
-            if (!showPopup())
-                return null;
-            if (tttext == null)
+            if (!showPopup() || oldTTEntity == null)
                 return null;
-            return new Point(event.getX()-5, event.getY()-5);
+            
+            if (ttPosition == null){
+                ttPosition = new Point(event.getX()-5, event.getY()+2);
+            }
+            return ttPosition;
         }
-        
+
         /**
          * @param e
          */

---------------------------------------------------------------------
Site Web Ancestris : http://www.ancestris.org

<*> Pour vous desinscrire de cette liste, envoyez un mail a :
              [email protected]
<*> Pour obtenir de l'aide sur les commandes de la liste :
              [email protected]

Pour obtenir tous les messages lies a ce fil de discussion, cliquez sur le 
lien ci-dessous, cela ouvrira votre logiciel de messagerie. Il vous suffira 
d'envoyer le message :
              [email protected]

Reply via email to