From dcffe47de72cde710f575296e08fe3848680149f Mon Sep 17 00:00:00 2001
From: Fabien Tessier <fabien.tessier@telecom-paristech.fr>
Date: Mon, 2 Oct 2017 14:05:38 +0200
Subject: [PATCH] Fix selection bug (unselect on open diagram and change tab)

---
 src/main/java/ui/MainGUI.java                         | 3 +++
 src/main/java/ui/TDiagramPanel.java                   | 4 ++++
 src/main/java/ui/TURTLEPanelPopupListener.java        | 3 +++
 src/main/java/ui/avatarbd/AvatarBDBlock.java          | 1 +
 src/main/java/ui/iod/IODRefIOD.java                   | 1 +
 src/main/java/ui/iod/IODRefSD.java                    | 1 +
 src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java | 1 +
 src/main/java/ui/tmlcp/TMLCPRefAD.java                | 1 +
 src/main/java/ui/tmlcp/TMLCPRefSD.java                | 3 ++-
 9 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index d5d6218b60..043a53da21 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -8179,12 +8179,15 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
         }
 
         public void mousePressed(MouseEvent e) {
+        	activetdp.tdmm.setSelection(-1, -1);
             checkForPopup(e);
         }
         public void mouseReleased(MouseEvent e) {
+        	activetdp.tdmm.setSelection(-1, -1);
             checkForPopup(e);
         }
         public void mouseClicked(MouseEvent e) {
+        	activetdp.tdmm.setSelection(-1, -1);
             checkForPopup(e);
         }
 
diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java
index b5ee0e78d7..e906f43de7 100755
--- a/src/main/java/ui/TDiagramPanel.java
+++ b/src/main/java/ui/TDiagramPanel.java
@@ -3448,4 +3448,8 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
     public void setComponentPointed(TGComponent tgc) {
     	componentPointed = tgc;
     }
+    
+    public TDiagramMouseManager getMouseManager() {
+    	return tdmm;
+    }
 }
diff --git a/src/main/java/ui/TURTLEPanelPopupListener.java b/src/main/java/ui/TURTLEPanelPopupListener.java
index 2b868b37fb..b4f9cefc1e 100755
--- a/src/main/java/ui/TURTLEPanelPopupListener.java
+++ b/src/main/java/ui/TURTLEPanelPopupListener.java
@@ -75,14 +75,17 @@ public class TURTLEPanelPopupListener extends MouseAdapter /* popup menus onto t
     }
 
     public void mousePressed(MouseEvent e) {
+    	mgui.getCurrentTDiagramPanel().getMouseManager().setSelection(-1, -1);
         checkForPopup(e);
     }
     
     public void mouseReleased(MouseEvent e) {
+    	mgui.getCurrentTDiagramPanel().getMouseManager().setSelection(-1, -1);
         checkForPopup(e);
     }
     
     public void mouseClicked(MouseEvent e) {
+    	mgui.getCurrentTDiagramPanel().getMouseManager().setSelection(-1, -1);
         checkForPopup(e);
     }
 
diff --git a/src/main/java/ui/avatarbd/AvatarBDBlock.java b/src/main/java/ui/avatarbd/AvatarBDBlock.java
index 9b259ddff4..f2bbe53002 100644
--- a/src/main/java/ui/avatarbd/AvatarBDBlock.java
+++ b/src/main/java/ui/avatarbd/AvatarBDBlock.java
@@ -566,6 +566,7 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
         int textX = (int) (this.textX * this.tdp.getZoom ());
         if (iconIsDrawn) {
             if (GraphicLib.isInRectangle(_x, _y, x + width - iconSize - textX, y + textX, iconSize, iconSize)) {
+            	tdp.getMouseManager().setSelection(-1, -1);
                 tdp.selectTab(getValue());
                 return true;
             }
diff --git a/src/main/java/ui/iod/IODRefIOD.java b/src/main/java/ui/iod/IODRefIOD.java
index 7582491915..72c08780b5 100755
--- a/src/main/java/ui/iod/IODRefIOD.java
+++ b/src/main/java/ui/iod/IODRefIOD.java
@@ -161,6 +161,7 @@ public class IODRefIOD extends TGCOneLineText {
         } else {
             ((InteractionOverviewDiagramPanel)tdp).createIODiagram(value);
         }
+        tdp.getMouseManager().setSelection(-1, -1);
         return true;
     }
 	
diff --git a/src/main/java/ui/iod/IODRefSD.java b/src/main/java/ui/iod/IODRefSD.java
index ad4856d044..41ac75aaf1 100755
--- a/src/main/java/ui/iod/IODRefSD.java
+++ b/src/main/java/ui/iod/IODRefSD.java
@@ -158,6 +158,7 @@ public class IODRefSD extends TGCOneLineText {
         } else {
             ((InteractionOverviewDiagramPanel)tdp).createSequenceDiagram(value);
         }   
+        tdp.getMouseManager().setSelection(-1, -1);
         return true;
     }
 	
diff --git a/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java b/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
index 2c7dd57259..64b36bf3cd 100755
--- a/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
+++ b/src/main/java/ui/tmlcompd/TMLCPrimitiveComponent.java
@@ -294,6 +294,7 @@ public class TMLCPrimitiveComponent extends TGCScalableWithInternalComponent imp
         // On the icon?
         if (iconIsDrawn) {
             if (GraphicLib.isInRectangle(_x, _y, x + width - iconSize - textX, y + textX, iconSize, iconSize)) {
+            	tdp.getMouseManager().setSelection(-1, -1);
                 tdp.selectTab(getValue());
                 return true;
             }
diff --git a/src/main/java/ui/tmlcp/TMLCPRefAD.java b/src/main/java/ui/tmlcp/TMLCPRefAD.java
index d6e31f5d4e..31b1676a04 100755
--- a/src/main/java/ui/tmlcp/TMLCPRefAD.java
+++ b/src/main/java/ui/tmlcp/TMLCPRefAD.java
@@ -166,6 +166,7 @@ public class TMLCPRefAD extends TGCOneLineText {
         else {
             ( (TMLCPPanel)tdp ).createTMLCPDiagram( name );
         }
+        tdp.getMouseManager().setSelection(-1, -1);
         return true;
     }
 
diff --git a/src/main/java/ui/tmlcp/TMLCPRefSD.java b/src/main/java/ui/tmlcp/TMLCPRefSD.java
index 6441e6a161..6de4589dc3 100755
--- a/src/main/java/ui/tmlcp/TMLCPRefSD.java
+++ b/src/main/java/ui/tmlcp/TMLCPRefSD.java
@@ -164,7 +164,8 @@ public class TMLCPRefSD extends TGCOneLineText {
       }
 			else {
 				( (TMLCPPanel)tdp ).createTMLCPSequenceDiagram( name );
-			}   
+			}
+      tdp.getMouseManager().setSelection(-1, -1);
       return true;
     }
 	
-- 
GitLab