Trapping the X
Usually when I write a VIEW program I include a QUIT button, which usually just executes the "quit" function. But sometimes I like to do other stuff before quitting. A VIEW program can be ended also by clicking the X in the upper right (on Windows) corner. Does anyone know if I can intercept an attempted click of that X so the program doesn't quit without me gaining control for some end-of-job processing? Thank you.
posted by: Steven White 24-Mar-2014/13:57:09-7:00
You need to set a global event handler with INSERT-EVENT-FUNC, then you can intercept the CLOSE event. Then, in order to quit, you need to let the event pass through the event handler, otherwise NONE to prevent quit. http://www.rebol.com/docs/view-face-events.html See the SWITCH idiom at the bottom. REMOVE-EVENT-FUNC is necessary in order to remove event functions created with INSERT-EVENT-FUNC.
posted by: Henrik 24-Mar-2014/14:46:22-7:00
R E B O L [] closer: insert-event-func [ either event/type = 'close [ if true = request "Really close?" [remove-event-func :closer] ] [event] ] view layout [size 600x400]
posted by: Nick 24-Mar-2014/22:18:20-7:00
I looked at that document referenced above, and I think I have reached my own "level of incompetence." However, I did insert that little bit of code into my program and it works great. Thank you.
posted by: Steven White 25-Mar-2014/17:49:52-7:00
|