Mercurial > hg > octave-nkf
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 +++ b/scripts/plot/draw/rectangle.m @@ -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{:});