# HG changeset patch # User Rik # Date 1382456063 25200 # Node ID f0bc865db55ff68809e651e947ca4a772b47bb9e # Parent 132d9f543cc5175ec099f05d48123ffe624b6e2f 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). diff -r 132d9f543cc5 -r f0bc865db55f scripts/plot/draw/rectangle.m --- 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{:});