Issue 11896: Save on Close fails in IDLE, from Linux system (original) (raw)

Under some circumstances, which I will detail later down the note, if I click File --> Close without explicitly saving, and without running the module with Run --> Run Module , then the last changes I made to the file do not get saved. The save dialogue pop-up does appear, and I do select YES--- I want to save before closing--- but when I re-open the file (IDLE or vi) the changes are not there... as though the save binding did not work, or like there was some timing glitch that prevented the save somehow before the edit window closed down. The error is not solid, in that, if the file is larger (significantly) then the File --> Close (select Yes on the dialogue) does work... ??

The work around is to do either 1) run the module, or 2) explicitly click File --> Save.

The alleged bug can be reproduced on both of my primary desk machines, Linux systems, using IDLE on 2.6, 2.7, and 3.2/ These are the instructions for reproducing this little snag:

  1. Open a new edit window with File --> New Window

  2. Enter the following code on the first two lines: def testfunc(): return None

  3. Click File --> Save ( testit.py )

  4. Click File --> Close

  5. Open the file with File --> Recent Files ( select testit.py )

  6. Use the edit window to place these three lines above testfunc:

############################

comment block

##############################

  1. Click File --> Close

  2. When the Save on Close dialogue appears select "Yes"

  3. Re-open the file with File --> Recent Files ( select testit.py )

  4. The comment block will not be there... didn't save.

Running on Ubuntu 9.10 (all updates)

Tk 8.5.x

reproduced on built-in 2.6 & compiled from sources... 2.7 & 3.2

kind regards, m harris

tkinter.messagebox.Message sending <class '_tkinter.Tcl_Obj'> rather than str, so comparison with str failed. Always for "cancel", (almost?) always for "yes".

Use the helper functions in tkinter.messagebox, which correct for that.

This hasn't worked for a long time, I'm surprised it just came up. Will backport to 2.7.