[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Changeset]: Re: cla() ?
From: |
Ben Abbott |
Subject: |
Re: [Changeset]: Re: cla() ? |
Date: |
Fri, 10 Oct 2008 13:43:24 -0400 |
On Friday, October 10, 2008, at 11:34AM, "John W. Eaton" <address@hidden> wrote:
>On 10-Oct-2008, Ben Abbott wrote:
>
>|
>| On Oct 10, 2008, at 7:44 AM, Michael Goffioul wrote:
>|
>| > On Fri, Oct 10, 2008 at 1:40 PM, Ben Abbott <address@hidden> wrote:
>| >> It does not appear that __go_delete__ does the job properly either.
>| >>
>| >> octave-3.1.51+:1> figure(1)
>| >> octave-3.1.51+:2> axis
>| >> ans =
>| >> 0 1 0 1 0 1
>| >> octave-3.1.51+:3> gca
>| >> ans = -1.3284
>| >> octave-3.1.51+:4> delete(gca)
>| >> octave-3.1.51+:5> get(gcf,'currentaxes')
>| >> ans = -1.3284
>| >
>| > That's not the problem. __go_delete__ should just make
>| > sure that get(gcf,'children') does not contain the axes
>| > handle anymore. In the case above, the figure object should
>| > catch the child removal and update currentaxes accordingly.
>| > In practice, figure::properties::remove_child overload is
>| > missing.
>| >
>| > Michael.
>|
>| ok!
>|
>| From my naive position that looks like a simple change. Might someone
>| take care of that?
>
>I would, but I don't know precisely what the
>figure::properties::remove_child function should do. I assume it
>would be something like
>
> void
> figure::properties::remove_child (const graphics_handle& h)
> {
> if (h.ok () && h == currentaxes.handle_value ())
> xset (0, "currentaxes", ???);
>
> base_properties::remove_child (h);
> }
>
>but I don't know how to determine which axes should become the new
>currentaxes.
>
>jwe
Looking at Matlab ...
figure(1)
axis;
figure(2)
axis;
delete(gca)
get(gca,'parent')
ans = 2
Which implies that an axis for figure 2 is created when gca is called.
figure(1)
subplot(211)
set(gca,'tag','first')
subplot(212)
set(gca,'tag','second')
delete(gca)
get(gca,'tag')
ans = 'first'
In this instance the deleted axis remains deleted.
So it appears that if no axis exists for the current figure, gca will create an
axis and return its handle. If an axis does exist as a child of the current
figure, then (after some playing) the handle for the newest axis is returned.
Which corresponds to findobj(gcf,"type","axes")(1).
So when the "currentaxes" of a figure is deleted, the equivalent of the code
below is run.
currentaxes = findobj (hfig, "type", "axes")(1);
if (isempty (currentaxes))
currentaxes = axes;
endif
Ben
- Re: Strange handle behavior (was Re: [Changeset]: Re: cla() ?), (continued)
- Re: [Changeset]: Re: cla() ?, John W. Eaton, 2008/10/08
- Re: [Changeset]: Re: cla() ?, Michael Goffioul, 2008/10/10
- Re: [Changeset]: Re: cla() ?, Ben Abbott, 2008/10/10
- Re: [Changeset]: Re: cla() ?, Michael Goffioul, 2008/10/10
- Re: [Changeset]: Re: cla() ?, Ben Abbott, 2008/10/10
- Re: [Changeset]: Re: cla() ?, John W. Eaton, 2008/10/10
- Re: [Changeset]: Re: cla() ?,
Ben Abbott <=
- Re: [Changeset]: Re: cla() ?, John W. Eaton, 2008/10/10
- Re: [Changeset]: Re: cla() ?, Michael Goffioul, 2008/10/10
- Re: [Changeset]: Re: cla() ?, John W. Eaton, 2008/10/10
- Re: [Changeset]: Re: cla() ?, Ben Abbott, 2008/10/07
- Re: [Changeset]: Re: cla() ?, David Bateman, 2008/10/07