From a32c45f4d1e2b90453ebbba195dedce3ed0de901 Mon Sep 17 00:00:00 2001
From: apvrille <ludovic.apvrille@eurecom.fr>
Date: Fri, 23 Nov 2018 11:24:33 +0100
Subject: [PATCH] Update on zoom management

---
 .../ui/TGCScalableWithInternalComponent.java  | 21 +++++++++----------
 .../TGCScalableWithoutInternalComponent.java  | 13 ++++++++++++
 ttool/src/test/java/ui/TestTDiagramPanel.java |  8 +++----
 3 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/src/main/java/ui/TGCScalableWithInternalComponent.java b/src/main/java/ui/TGCScalableWithInternalComponent.java
index 63b823d6a3..ac9c0cce48 100644
--- a/src/main/java/ui/TGCScalableWithInternalComponent.java
+++ b/src/main/java/ui/TGCScalableWithInternalComponent.java
@@ -97,12 +97,7 @@ public abstract class TGCScalableWithInternalComponent extends TGCWithInternalCo
         maxX *= factor;
         maxY *= factor;
 
-        if (father == null) {
-            minX = tdp.getMinX();
-            maxX = tdp.getMaxX();
-            minY = tdp.getMinY();
-            maxY = tdp.getMaxY();
-        }
+
 
         //TraceManager.addDev("x=" + x + " y=" + y + " width=" + width + " height=" + height);
 
@@ -111,6 +106,11 @@ public abstract class TGCScalableWithInternalComponent extends TGCWithInternalCo
         if (father != null) {
             // Must rescale my zone...
             resizeWithFather();
+        } else {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
         }
 
         setMoveCd(x, y, true);
@@ -122,7 +122,6 @@ public abstract class TGCScalableWithInternalComponent extends TGCWithInternalCo
                 ((ScalableTGComponent)tgcomponent[i]).rescale(scaleFactor);
             }
         }
-
         hasBeenResized();
     }
 
@@ -150,10 +149,10 @@ public abstract class TGCScalableWithInternalComponent extends TGCWithInternalCo
         dMaxHeight = dMaxHeight - maxHeight;
 
         if (father == null) {
-            minX = tdp.getMinX();
-            maxX = tdp.getMaxX();
-            minY = tdp.getMinY();
-            maxY = tdp.getMaxY();
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
         }
 
         rescaled = true;
diff --git a/src/main/java/ui/TGCScalableWithoutInternalComponent.java b/src/main/java/ui/TGCScalableWithoutInternalComponent.java
index e7233095e6..5d978910f5 100644
--- a/src/main/java/ui/TGCScalableWithoutInternalComponent.java
+++ b/src/main/java/ui/TGCScalableWithoutInternalComponent.java
@@ -100,6 +100,12 @@ public abstract class TGCScalableWithoutInternalComponent extends TGCWithoutInte
         if (father != null) {
             // Must rescale my zone...
             resizeWithFather();
+        } else {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+
         }
 	
         setMoveCd(x, y, true);
@@ -128,6 +134,13 @@ public abstract class TGCScalableWithoutInternalComponent extends TGCWithoutInte
         dMaxWidth = dMaxWidth - maxWidth;
         dMaxHeight = dMaxHeight - maxHeight;
 
+        if (father == null) {
+            minX = (int)(tdp.getMinX()/tdp.getZoom());
+            maxX = (int)(tdp.getMaxX()/tdp.getZoom());
+            minY = (int)(tdp.getMinY()/tdp.getZoom());
+            maxY = (int)(tdp.getMaxY()/tdp.getZoom());
+        }
+
         rescaled = true;
     }
 }
diff --git a/ttool/src/test/java/ui/TestTDiagramPanel.java b/ttool/src/test/java/ui/TestTDiagramPanel.java
index 5da0d9c7dd..b6b3ce0942 100644
--- a/ttool/src/test/java/ui/TestTDiagramPanel.java
+++ b/ttool/src/test/java/ui/TestTDiagramPanel.java
@@ -89,7 +89,7 @@ public class TestTDiagramPanel extends AbstractUITest {
     /**
      * Issue #81
      */
-    /*@Test
+    @Test
     public void testMoveAtomicComponentAfterZoom() {
         diagramPanel.setZoom(3.0);
 
@@ -100,10 +100,10 @@ public class TestTDiagramPanel extends AbstractUITest {
         diagramPanel.rightComponent();
 
         checkResults(expectedPos, atomicComponent);
-    }*/
+    }
+
 
 
-    /*
     @Test
     public void testMoveCompositeComponentAfterZoom() {
         diagramPanel.setZoom(3.0);
@@ -115,7 +115,7 @@ public class TestTDiagramPanel extends AbstractUITest {
         diagramPanel.rightComponent();
 
         checkResults(expectedPos, compositeComponent);
-    } */
+    }
 
     private void checkResults(final Point expectedPos, final TGComponent component) {
         assertTrue("X position is " + component.getX() + " instead of " + expectedPos.x + ".", component.getX() == expectedPos.x);
-- 
GitLab