Does anyone know how to capture the event generated when one clicks on
the X button in the uppper right corner? I want to perform some
verifications and cleanup prior to closing.
Thanks,
Rich
···
Rich Kilmer, InfoEther LLC
trap(“SIGINT”) { raise [104, 101, 108, 108].pack(“cccc”) }
Rich Kilmer wrote:
Does anyone know how to capture the event generated when one clicks on
the X button in the upper right corner? I want to perform some
verifications and cleanup prior to closing.
When you click the kill button on the main window, it (the FXMainWindow
object) first sends a SEL_CLOSE message to its message target, if any.
If that target handles the message then life goes on (i.e. the
application doesn’t shut down). If the main window doesn’t have a
message target, or if it does but the target doesn’t handle the
SEL_CLOSE message, then the main window sends a SEL_COMMAND message
(with identifier FXApp::ID_QUIT) to the application (FXApp) object. And
that more or less terminates the main FOX event loop.
So for what you’re describing, I think I’d try something like this:
theMainWindow.connect(SEL_CLOSE) do
# Do fun things
verify_things
clean_up_things
if ok_to_quit?
# All is well to shut down, so go ahead
# and send the ID_QUIT message to the
# application.
theMainWindow.app.handle(theMainWindow,
MKUINT(FXApp::ID_QUIT, SEL_COMMAND), nil)
else
# We've decided not to shut down after all
end
end
Hope this helps,
Lyle
That solved my problem perfectly. The FreeRIDE project thanks you
-rich
···
-----Original Message-----
From: Lyle Johnson [mailto:lyle@users.sourceforge.net]
Sent: Thursday, December 05, 2002 7:17 PM
To: ruby-talk ML
Subject: Re: FXRuby question
Rich Kilmer wrote:
Does anyone know how to capture the event generated when
one clicks on
the X button in the upper right corner? I want to perform some
verifications and cleanup prior to closing.
When you click the kill button on the main window, it (the
FXMainWindow
object) first sends a SEL_CLOSE message to its message
target, if any.
If that target handles the message then life goes on (i.e. the
application doesn’t shut down). If the main window doesn’t have a
message target, or if it does but the target doesn’t handle the
SEL_CLOSE message, then the main window sends a SEL_COMMAND message
(with identifier FXApp::ID_QUIT) to the application (FXApp)
object. And
that more or less terminates the main FOX event loop.
So for what you’re describing, I think I’d try something like this:
theMainWindow.connect(SEL_CLOSE) do
# Do fun things
verify_things
clean_up_things
if ok_to_quit?
# All is well to shut down, so go ahead
# and send the ID_QUIT message to the
# application.
theMainWindow.app.handle(theMainWindow,
MKUINT(FXApp::ID_QUIT, SEL_COMMAND), nil)
else
# We've decided not to shut down after all
end
end
Hope this helps,
Lyle