UIC: Revalidate and repaint menubar after adding/removing menu 55/14055/2
Calixte DENIZET [Tue, 18 Mar 2014 10:16:20 +0000 (11:16 +0100)]
Change-Id: I8639687793111e7859c7a9a9acccac8d9c0a9b7c

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

index da8075e..8224e20 100644 (file)
@@ -969,6 +969,7 @@ public final class SwingView implements GraphicView {
     private void updateFigureChildren(TypedObject updatedObject, Integer[] newChildren) {
         Container updatedComponent = (Container) updatedObject.getValue();
         boolean needRevalidate = false;
+        boolean needRevalidateMenubar = false;
 
         // Add new children
         for (Integer childId : newChildren) {
@@ -1009,7 +1010,7 @@ public final class SwingView implements GraphicView {
                             ((Container) ((SwingScilabPanel) updatedComponent).getMenuBar().getAsSimpleMenuBar()).add((SwingScilabMenu) allObjects.get(childId).getValue());
                             break;
                     }
-                    needRevalidate = true;
+                    needRevalidateMenubar = true;
                 }
             }
         }
@@ -1048,10 +1049,16 @@ public final class SwingView implements GraphicView {
                             ((Container) ((SwingScilabPanel) updatedComponent).getMenuBar().getAsSimpleMenuBar()).remove((SwingScilabMenu) allObjects.get(childId).getValue());
                             break;
                     }
-                    needRevalidate = true;
+                    needRevalidateMenubar = true;
                 }
             }
         }
+
+        if (needRevalidateMenubar) {
+            ((JComponent) ((SwingScilabPanel) updatedComponent).getMenuBar().getAsSimpleMenuBar()).revalidate();
+            ((JComponent) ((SwingScilabPanel) updatedComponent).getMenuBar().getAsSimpleMenuBar()).repaint();
+        }
+
         if (needRevalidate && updatedComponent != null) {
             ((JComponent) updatedComponent).revalidate();
         }