changeset 17724:f0bc865db55f

rectangle.m: Fix multiple parenting issues (bug #40214, bug #39813). * scripts/plot/draw/rectangle.m: If no axes provided, use gca. hggroup that holds rectangle is parented either to provided "parent" or gca. Don't call newplot because rectangle is a base graphics object (low level).
author Rik <rik@octave.org>
date Tue, 22 Oct 2013 08:34:23 -0700
parents 132d9f543cc5
children 3f02bcf2bdcc
files scripts/plot/draw/rectangle.m
diffstat 1 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/draw/rectangle.m	Tue Oct 22 06:32:54 2013 -0700
+++ b/scripts/plot/draw/rectangle.m	Tue Oct 22 08:34:23 2013 -0700
@@ -59,13 +59,17 @@
 
   [hax, varargin] = __plt_get_axis_arg__ ("rectangle", varargin{:});
 
+  if (isempty (hax))
+    hax = gca ();
+  else
+    hax = hax(1);
+  endif
+
   oldfig = [];
   if (! isempty (hax))
     oldfig = get (0, "currentfigure");
   endif
   unwind_protect
-    hax = newplot (hax);
-
     htmp = __rectangle__ (hax, varargin{:});
   unwind_protect_cleanup
     if (! isempty (oldfig))
@@ -85,6 +89,7 @@
   curv2 = [0, 0];
   ec = [0, 0, 0];
   fc = "none";
+  parent = [];
 
   while (iarg < length (varargin))
     arg = varargin{iarg};
@@ -110,6 +115,9 @@
       elseif (strcmpi (arg, "facecolor"))
         fc = varargin{iarg+1};
         varargin(iarg:iarg+1) = [];
+      elseif (strcmpi (arg, "parent"))
+        parent = varargin{iarg+1};
+        varargin(iarg:iarg+1) = [];
       else
         iarg ++;
       endif
@@ -145,7 +153,11 @@
          pos(2) + pos(4) + cy, pos(2) + c(2)];
   endif
 
-  hg = hggroup ();
+  if (! isempty (parent))
+    hg = hggroup ("parent", parent);
+  else
+    hg = hggroup ("parent", hax);
+  endif
 
   h = patch ("xdata", x(:), "ydata", y(:), "facecolor", fc, "edgecolor", ec,
              "parent", hg, varargin{:});