* Bug #10346 fixed - An uicontrol was visible during few milliseconds even if its 28/8928/4
Vincent COUVERT [Tue, 4 Sep 2012 09:19:21 +0000 (11:19 +0200)]
                     "Visible" property was set to "off".

Change-Id: Ib40ef62c5b1ec46e4d4435ec10fd091b57479ca6

scilab/CHANGES_5.4.X
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java
scilab/modules/gui/sci_gateway/c/sci_uicontrol.c
scilab/modules/gui/src/java/org/scilab/modules/gui/SwingView.java
scilab/modules/gui/tests/nonreg_tests/bug_10346.tst [new file with mode: 0644]

index b0ca093..09f6fec 100644 (file)
@@ -54,6 +54,9 @@ Bug Fixes
 
 * Bug #8799 fixed - gsort did not work with hypermatrices.
 
+* Bug #10346 fixed - An uicontrol was visible during few milliseconds even if
+                     its "Visible" property was set to "off".
+
 * Bug #10559 fixed - Sspectral estimation demonstration failed if the graphic
                      figure was closed.
 
index 4c60e83..2202590 100644 (file)
@@ -75,7 +75,6 @@ public class Uicontrol extends GraphicObject {
     private static final String DEFAULTFONTNAME = "helvetica";
     private static final String DEFAULTFONTWEIGHT = "normal";
     private static final String DEFAULTFONTANGLE = DEFAULTFONTWEIGHT;
-
     private static final String DEFAULTRELIEF = __GO_UI_RAISED_RELIEF__;
 
     private UicontrolStyle style;
@@ -157,6 +156,7 @@ public class Uicontrol extends GraphicObject {
      */
     public Uicontrol() {
         super();
+        setVisible(false); /* To avoid to see the object rendered before all its properties to be set (See bug #10346) */
     }
 
     /**
index 8dfdae4..6b9eddf 100644 (file)
@@ -355,7 +355,6 @@ int sci_uicontrol(char *fname, unsigned long fname_len)
                 pstCurrentFigure = createNewFigureWithAxes();
             }
             setGraphicObjectRelationship(pstCurrentFigure, graphicObjectUID);
-            // TODO Remove following code and called functions in src/cpp/*.cpp
         }
 
         /* Read and set all properties */
@@ -421,6 +420,13 @@ int sci_uicontrol(char *fname, unsigned long fname_len)
         }
     }
 
+    if (propertiesValuesIndices[24] == NOT_FOUND)    /* Visible property not set */
+    {
+        /* Force the uicontrol to be visible because is invisible by default in the model (See bug #10346) */
+        int b = (int)TRUE;
+        setGraphicObjectProperty(pUicontrol, __GO_VISIBLE__, &b, jni_bool, 1);
+    }
+
     FREE(propertiesValuesIndices);
 
     /* Create return variable */
index 97498bf..62b80bd 100644 (file)
@@ -490,6 +490,9 @@ public final class SwingView implements GraphicView {
      * @param id the uicontrol id
      */
     private void setDefaultProperties(Widget uiControlObject, String id) {
+        /* Visible property is set first to avoid to see the object rendered before all its properties to be set (See bug #10346) */
+        SwingViewWidget.update(uiControlObject, __GO_VISIBLE__,
+                               (Boolean) GraphicController.getController().getProperty(id, __GO_VISIBLE__));
         SwingViewWidget.update(uiControlObject, __GO_UI_BACKGROUNDCOLOR__,
                                (Double[]) GraphicController.getController().getProperty(id, __GO_UI_BACKGROUNDCOLOR__));
         SwingViewWidget.update(uiControlObject, __GO_UI_ENABLE__,
@@ -518,8 +521,6 @@ public final class SwingView implements GraphicView {
                                (String) GraphicController.getController().getProperty(id, __GO_UI_VERTICALALIGNMENT__));
         SwingViewWidget.update(uiControlObject, __GO_POSITION__,
                                (Double[]) GraphicController.getController().getProperty(id, __GO_POSITION__));
-        SwingViewWidget.update(uiControlObject, __GO_VISIBLE__,
-                               (Boolean) GraphicController.getController().getProperty(id, __GO_VISIBLE__));
     }
 
     @Override
diff --git a/scilab/modules/gui/tests/nonreg_tests/bug_10346.tst b/scilab/modules/gui/tests/nonreg_tests/bug_10346.tst
new file mode 100644 (file)
index 0000000..b881d09
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Vincent COUVERT
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 10346 -->
+// <-- TEST WITH GRAPHIC -->
+// <-- INTERACTIVE TEST -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/10346
+//
+// <-- Short Description -->
+// An uicontrol is visible during few millisecs even if its property "Visible" is set to "off"
+
+f=figure();
+for i=1:1000
+    uicontrol("Visible", "off", "String", "Hello");
+end
+// Check you never see the uicontrol
\ No newline at end of file