* bug #13651 fixed - an axes couldn't be copied in a uicontrol frame 97/18697/3
Samuel GOUGEON [Sat, 19 Nov 2016 18:48:55 +0000 (19:48 +0100)]
  http://bugzilla.scilab.org/13651

Change-Id: I08840780adc8d34ae46af04abbddbc59af3ab3b5

scilab/CHANGES.md
scilab/modules/graphics/macros/%h_copy.sci
scilab/modules/graphics/tests/nonreg_tests/bug_13651.tst [new file with mode: 0644]

index 124129e..e95c10e 100644 (file)
@@ -344,6 +344,7 @@ Bug Fixes
 * [#13597](http://bugzilla.scilab.org/show_bug.cgi?id=13597): `help format` claimed setting a number of digits instead of characters
 * [#13613](http://bugzilla.scilab.org/show_bug.cgi?id=13613): `isdef(name, 'l')` produced wrong output.
 * [#13620](http://bugzilla.scilab.org/show_bug.cgi?id=13620): `dos` called with a vector as input crashed.
+* [#13651](http://bugzilla.scilab.org/show_bug.cgi?id=13651): It was not possible to `copy` an axes into an uicontrol frame.
 * [#13757](http://bugzilla.scilab.org/show_bug.cgi?id=13757): The toolbox menu dit not load properly ATOMS modules not autoloaded.
 * [#13878](http://bugzilla.scilab.org/show_bug.cgi?id=13878): tokens([]) returns [].
 * [#13895](http://bugzilla.scilab.org/show_bug.cgi?id=13895): p.a.h = 1; p.b.h = 3; p(:).h  CRASH
index 5091f29..823d9c7 100644 (file)
@@ -2,6 +2,7 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) INRIA
 // Copyright (C) 2013-2013 - Scilab Enterprises - Bruno JOFRET
+// Copyright (C) 2016 - Samuel GOUGEON
 //
 // Copyright (C) 2012 - 2016 - Scilab Enterprises
 //
@@ -12,9 +13,8 @@
 // For more information, see the COPYING file which you should have received
 // along with this program.
 //
-//
 
-function h=%h_copy(h,ax)
+function h = %h_copy(h,ax)
     filename = tempname();
     save(filename,"h")
     if argn(2)<2 then
@@ -25,6 +25,18 @@ function h=%h_copy(h,ax)
             set("current_axes", ax)
             load(filename)
             set("current_axes", a)
+
+        elseif ax.type=="uicontrol" & ax.style=="frame"
+            set("current_entity",ax)
+            if h.type=="Axes"
+                na = newaxes(ax)
+                load(filename)
+                swap_handles(ax.parent.children(1),na)
+                delete(ax.parent.children(1))
+            else
+                load(filename)
+            end
+
         else
             a = gcf()
             scf(ax)
@@ -32,5 +44,5 @@ function h=%h_copy(h,ax)
             scf(a)
         end
     end
-    mdelete(filename);
+    mdelete(filename)
 endfunction
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13651.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13651.tst
new file mode 100644 (file)
index 0000000..70e5b86
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 13651 -->
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// No relevant console output to be tested:
+// <-- NO CHECK REF -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13651
+//
+// <-- Short Description -->
+//    copying an axes in a uicontrol frame was not possible
+
+driver null; // We don't need to render anything
+plot2d()
+ax1 = gca();
+ax1.tag = "plot2d example";
+f2 = scf();
+fr = uicontrol(f2, "style", "frame");
+copy(ax1, fr);
+
+assert_checkequal(fr.children(1).type, "Axes");
+assert_checkequal(fr.children(1).tag, "plot2d example");