[fxruby-users] test if a window has been destroyed
Joel VanderWerf
vjoel at path.berkeley.edu
Thu Apr 19 15:37:54 EDT 2007
Lyle Johnson wrote:
> On 4/19/07, Meinrad Recheis <meinrad.recheis at gmail.com> wrote:
>
>> jeah, and interestingly a widget comes back to life when you call create
>> again. i found out that calling destroy on widgets does not remove them from
>> the widget tree and they come back to live after calling create on their
>> parent. but this is another story.
>
> Yes, this is as designed. Calling destroy() on a widget is (supposed
> to) only destroy the server-side resource and leave the client-side
> object (i.e. the Ruby instance) intact -- so that you could, as you
> noted, call create() on it to "re-realize" it. This is in contrast to,
> say, removeWidget(), which both destroys the server-side resource and
> deletes the client-side object.
>
> The message that Joel is seeing indicates that the underlying C++
> object has been destroyed (deleted) as well, which shouldn't happen if
> all you're doing is calling destroy on it. So I need to figure out
> what's going on there.
I *think* the following is a good workaround, and in some ways a better
approach than #destroyed? anyway (better to ask forgiveness than to ask
permission, as they say):
begin
window.show
rescue => ex
if /already released/ =~ ex.message
window = make_window
window.show
else
raise
end
end
I don't like matching the exception text though. I wonder if the
"already released" error could be represented by a subclass of RuntimeError?
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
More information about the fxruby-users
mailing list