* Bug #13881 fixed - datatipRemoveAll did not work. 24/16524/1
Samuel GOUGEON [Thu, 28 May 2015 13:30:58 +0000 (15:30 +0200)]
Change-Id: Idc29b1342ce9f5d8d9ba763f3277ddeab41c6ea6

scilab/CHANGES_5.5.X
scilab/modules/graphics/macros/datatips/datatipRemoveAll.sci
scilab/modules/graphics/tests/nonreg_tests/bug_13881.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_13881.tst [new file with mode: 0644]

index 3193ae9..ca682f7 100644 (file)
@@ -8,6 +8,8 @@ Scilab Bug Fixes
 
 * Bug #13854 fixed - On some operating systems, SciNotes did not initialize a new document at startup.
 
+* Bug #13881 fixed - datatipRemoveAll did not work.
+
 
 
                      Changes between version 5.5.1 and 5.5.2
@@ -22,6 +24,7 @@ Graphics Evolutions
 
 * New contour2dm function.
 
+
 Toolbox Skeleton
 =================
 
index eb98cf5..0df8a75 100644 (file)
@@ -1,5 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
+// Copyright (C) 2015 - Samuel GOUGEON : http://bugzilla.scilab.org/13881
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
 function datatipRemoveAll(curve_handles)
     //remove all the datatips for the given curves
     if argn(2)<>1 then //search for curves in the current axes
-        ax=gca()
-        curve_handles=datatipGetEntities(ax)
+        ax = gca()
+        curve_handles = datatipGetEntities(ax)
     elseif type(curve_handles)<>9 then
         error(msprintf(_("%s: Wrong type for input argument #%d: an array of graphic handle expected.\n"),"datatipRemoveAll",1))
-    elseif size(curve_handles,"*")==1&curve_handles.type=="Axes" then
+    elseif size(curve_handles,"*")==1 & curve_handles.type=="Axes" then
         //the argument is a handle on an axes, search for curves in it
-        ax=curve_handles
-        curve_handles=datatipGetEntities(ax)
-    elseif and(curve_handles<>"Figure") then
+        ax = curve_handles
+        curve_handles = datatipGetEntities(ax)
+    elseif and(curve_handles.type<>"Figure") then
         //check for a common axes entity for parent
-        ax=[]
+        ax = []
         for k=1:size(curve_handles,"*")
-            a=curve_handles(k)
-            while a.type<>"Axes" then a=a.parent,end
-            if ax<>[]&a<>ax then
+            a = curve_handles(k)
+            while a.type<>"Axes" then a = a.parent,end
+            if ax<>[] & a<>ax then
                 error(msprintf(_("%s: Wrong value for input argument #%d: the handles must have the same parent.\n"),"datatipRemoveAll",1))
             end
-            ax=a
+            ax = a
         end
     else
         error(msprintf(_("%s: Wrong type for input argument #%d: handle on axes or axes children expected.\n"),"datatipRemoveAll",1))
     end
-
-    fig=ax.parent
-    id=fig.immediate_drawing;
-    fig.immediate_drawing="off"
-    for k=1:size(curve_handles,"*")
-        ck=curve_handles(k);
-
-        num = 1;
-        for t=1:size(ck.children,"*")
-            tip = ck.children(num);
-            if tip.type == "Datatip" then
-                datatipRemove(tip);
-            else
-                num = num + 1;
-            end
+    fig = ax.parent
+    id = fig.immediate_drawing;
+    fig.immediate_drawing = "off"
+    for k = 1:size(curve_handles,"*")
+        tips = curve_handles(k).datatips
+        for i = 1:size(tips,"*")
+            datatipRemove(tips(i))
         end
     end
-    fig.immediate_drawing=id
+    fig.immediate_drawing = id
 endfunction
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13881.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_13881.dia.ref
new file mode 100644 (file)
index 0000000..41e06fc
--- /dev/null
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Vincent COUVERT
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 13881 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13881
+//
+// <-- Short Description -->
+// datatipRemoveAll does nothing
+x = linspace(0,1,100)';
+clf()
+plot(x,x.^3,"b",x,x.^2,"r");
+e = gce();
+e = e.children;
+datatipCreate(e(1),50);
+datatipCreate(e(2),20);
+datatipRemoveAll(e);
+assert_checktrue(size(e(1).datatips, "*")==0);
+assert_checktrue(size(e(2).datatips, "*")==0);
+clf
+plot(x,x.^3,"b",x,x.^2,"r");
+e = gce();
+e = e.children;
+datatipCreate(e(1),50);
+datatipCreate(e(2),20);
+datatipRemoveAll();
+assert_checktrue(size(e(1).datatips, "*")==0);
+assert_checktrue(size(e(2).datatips, "*")==0);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13881.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13881.tst
new file mode 100644 (file)
index 0000000..c9ab2e3
--- /dev/null
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Vincent COUVERT
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 13881 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13881
+//
+// <-- Short Description -->
+// datatipRemoveAll does nothing
+
+x = linspace(0,1,100)';
+clf()
+plot(x,x.^3,"b",x,x.^2,"r");
+e = gce();
+e = e.children;
+datatipCreate(e(1),50);
+datatipCreate(e(2),20);
+datatipRemoveAll(e);
+assert_checktrue(size(e(1).datatips, "*")==0);
+assert_checktrue(size(e(2).datatips, "*")==0);
+
+clf
+plot(x,x.^3,"b",x,x.^2,"r");
+e = gce();
+e = e.children;
+datatipCreate(e(1),50);
+datatipCreate(e(2),20);
+datatipRemoveAll();
+assert_checktrue(size(e(1).datatips, "*")==0);
+assert_checktrue(size(e(2).datatips, "*")==0);