From: SourceForge.net <no...@so...> - 2003-03-10 18:21:05
|
Bugs item #700317, was opened at 2003-03-09 12:11 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112997&aid=700317&group_id=12997 Category: MacOS X Specific Group: 8.4.2 Status: Open Resolution: None Priority: 5 Submitted By: Revar Desmera (revar) Assigned to: Jim Ingham (wolfsuit) Summary: OS X Aqua: Tk forces quit despite exit handler procedure Initial Comment: If the 'exit' command is replaced by a proc, (ie: via rename) and that procedure pauses for the results of a dialog, the Tk interpreter should NOT force the application exit via Tcl_Exit(0) as it does now. The Quit command is a request to quit, not an imperative. There may be unsaved files to save, confirmation dialogs, etc. that need the user's attention. ---------------------------------------------------------------------- Comment By: Jim Ingham (wolfsuit) Date: 2003-03-10 18:32 Message: Logged In: YES user_id=169107 This works fine for me. It waits till the message box comes up, and is dismissed, and then exits: % rename exit really_exit % proc exit {} { set answer [tk_messageBox -message "Really quit" \ -type yesno -icon question] puts $answer } Does this not work for you? I kind of like the current behavior, because it means you have to do some work to hang up the machine, and it generally really bugs me that apps hang the shutdown. TextEdit could save the doc as a backup if I don't answer in a reasonable amount of time, etc... OTOH, the Aqua HI guidelines say: "At any time during the review process, the user can click Cancel to stop the quit operation." Which trumps my personal feelings... ---------------------------------------------------------------------- Comment By: Revar Desmera (revar) Date: 2003-03-10 14:43 Message: Logged In: YES user_id=6331 Run TextEdit. Enter some text into the new document window. Do not save the text. Go to the apple menu and select Shutdown. Note that TextEdit stops the shutdown to ask to save the files. If you click cancel, the shutdown is cancelled with another dialog noting so. Apple's X11 app also pauses shutdown for a dialog. As for using wait or tkwait... I was using the tk_messageBox call, and Wish Shell.app was exiting before I even saw the dialog drawn. If I can't use tk_messageBox, and expect it to wait, that's a very sad thing. :) ---------------------------------------------------------------------- Comment By: Jim Ingham (wolfsuit) Date: 2003-03-10 02:23 Message: Logged In: YES user_id=169107 The problem here is that the Quit menu sends a Quit Apple Event to Tk, and ALL well behaved Mac OS and Mac OS X apps are supposed to quit when sent a Quit AppleEvent. Otherwise, it can stop the shutdown of the machine, etc. So I am actually in favor of forcing Tcl_Exit from the Quit handler. But why is it necessary to exit your exit proc before you have done the work of closing files? You could use "wait" instead inside the exit proc to handle putting up a dialog, waiting for the user to save and then exit. That would achieve your purpose and still make Wish not be a "bad citizen". ---------------------------------------------------------------------- Comment By: Revar Desmera (revar) Date: 2003-03-10 01:09 Message: Logged In: YES user_id=6331 It's MacOS X specific. The Wish Shell.app Aqua program already evaluates [exit] on selecting the Quit Wish Shell menu item. It just instantly follows that with a Tcl_Exit(0), which prevents any use of dialogs, etc., for things like asking if the app should save unsave changes before closing. The apparent fix is the following patch to a MacOS X specific file: Index: tkMacOSXHLEvents.c =================================================================== RCS file: /cvsroot/tktoolkit/tk/macosx/tkMacOSXHLEvents.c,v retrieving revision 1.5 diff -u -r1.5 tkMacOSXHLEvents.c --- tkMacOSXHLEvents.c 25 Feb 2003 16:11:22 -0000 1.5 +++ tkMacOSXHLEvents.c 10 Mar 2003 00:26:38 -0000 @@ -425,9 +427,8 @@ if (interp != NULL) { Tcl_GlobalEval(interp, "exit"); } - Tcl_Exit(0); return 1; } /* ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2003-03-09 22:10 Message: Logged In: YES user_id=80530 Is this really Mac OSX specific? Isn't this really a Feature Request for Tk_Main to evaluate [exit] instead of calling Tcl_Exit() ? (Category 74 - Application Embedding) If so, a workaround may be to use tclsh instead, and gain access to the Tk package via [package require Tk]. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=112997&aid=700317&group_id=12997 |