Force repaint on children dynamic deletion. 83/15983/1
Bruno JOFRET [Thu, 19 Feb 2015 14:28:46 +0000 (15:28 +0100)]
Change-Id: Id999f06bc84f24d4e15c381d542c51a0687e0e9d

scilab/modules/gui/src/java/org/scilab/modules/gui/SwingView.java

index bb18d0c..f544668 100644 (file)
@@ -1078,7 +1078,8 @@ public final class SwingView implements GraphicView {
         SwingScilabFrame updatedComponent = (SwingScilabFrame) updatedObject.getValue();
         boolean needRevalidate = false;
         boolean hasOpenGLAxes = false;
-
+        int oldComponentCount = updatedComponent.getComponentCount();
+        
         // Add new children
         for (Integer childId : newChildren) {
             int childType = (Integer) GraphicController.getController().getProperty(childId, __GO_TYPE__);
@@ -1128,11 +1129,17 @@ public final class SwingView implements GraphicView {
         if (needRevalidate && updatedComponent != null) {
             updatedComponent.revalidate();
         }
+        
+        // Force repaint if we removed components
+        if (oldComponentCount > updatedComponent.getComponentCount()) {
+            updatedComponent.repaint();
+        }
     }
 
     private void updateScrollableFrameChildren(TypedObject updatedObject, Integer[] newChildren) {
         SwingScilabScrollableFrame updatedComponent = (SwingScilabScrollableFrame) updatedObject.getValue();
         boolean needRevalidate = false;
+        int oldComponentCount = updatedComponent.getPanel().getComponentCount();
 
         // Add new children
         for (Integer childId : newChildren) {
@@ -1171,8 +1178,14 @@ public final class SwingView implements GraphicView {
             }
         }
         if (needRevalidate && updatedComponent != null) {
-            updatedComponent.revalidate();
+            updatedComponent.getPanel().revalidate();
         }
+        
+        // Force repaint if we removed components
+        if (oldComponentCount > updatedComponent.getPanel().getComponentCount()) {
+            updatedComponent.repaint();
+        }
+
     }
 
     /**