Mercurial > hg > octave-nkf
changeset 17042:62d5f73e840c
axes.m: reorder figure children after setting the currentaxes (bug #39539).
* scripts/plot/axes.m:
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Sat, 20 Jul 2013 16:05:44 +0200 |
parents | 1b549a0c3ca4 |
children | f4dc32d6f263 |
files | scripts/plot/axes.m |
diffstat | 1 files changed, 33 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/axes.m +++ b/scripts/plot/axes.m @@ -20,7 +20,21 @@ ## @deftypefn {Function File} {} axes () ## @deftypefnx {Function File} {} axes (@var{property}, @var{value}, @dots{}) ## @deftypefnx {Function File} {} axes (@var{h}) -## Create an axes object and return a handle to it. +## @deftypefnx {Function File} {@var{h} =} axes (@dots{}) +## Create an axes object and return a handle to it, or set the current +## axes to @var{h}. +## +## Called without any arguments, or with @var{property}/@var{value} pairs, +## contruct a new axes. For accepted properties and corresponding +## values, see @code{set} function. +## +## Called with a single axes handle argument @var{h}, the function makes +## @var{h} the current axis. It also restacks the axes in the +## corresponding figure so that @var{h} is the first entry in the list +## of children. This causes @var{h} to be displayed on top of any other +## axes objects (Z-order stacking). +## +## @seealso {gca, set, get} ## @end deftypefn ## Author: jwe @@ -36,27 +50,33 @@ else cf = gcf (); endif - tmp = __go_axes__ (cf, varargin{:}); - if (__is_handle_visible__ (tmp)) - set (ancestor (cf, "figure"), "currentaxes", tmp); + htmp = __go_axes__ (cf, varargin{:}); + if (__is_handle_visible__ (htmp)) + set (ancestor (cf, "figure"), "currentaxes", htmp); endif else - ## arg is axes handle. - tmp = varargin{1}; - if (length (tmp) == 1 && ishandle (tmp) - && strcmp (get (tmp, "type"), "axes")) - if (__is_handle_visible__ (tmp)) - parent = ancestor (tmp, "figure"); + ## ARG is axes handle. + htmp = varargin{1}; + if (isscalar (htmp) && ishandle (htmp) + && strcmp (get (htmp, "type"), "axes")) + if (__is_handle_visible__ (htmp)) + parent = ancestor (htmp, "figure"); set (0, "currentfigure", parent); - set (parent, "currentaxes", tmp); + set (parent, "currentaxes", htmp); + + ## restack + ch = get (parent, "children")(:); + idx = (ch == htmp); + ch = [ch(idx); ch(!idx)]; + set (parent, "children", ch); endif else - error ("axes: expecting argument to be a scalar axes handle"); + error ("axes: H must be a scalar axes handle"); endif endif if (nargout > 0) - h = tmp; + h = htmp; endif endfunction