diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2012-05-27 00:23:45 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2012-05-27 00:23:45 (GMT) |
commit | cd6b8c67ceb4230198de9cdc971b27848c5391f0 (patch) | |
tree | 5b351486ca2641e5cf46f59eff73a6b8707a0374 | |
parent | 809309a4822124f46dc98514ccdf818564215f30 (diff) | |
download | cpython-cd6b8c67ceb4230198de9cdc971b27848c5391f0.zip cpython-cd6b8c67ceb4230198de9cdc971b27848c5391f0.tar.gz cpython-cd6b8c67ceb4230198de9cdc971b27848c5391f0.tar.bz2 |
Issue #10365: File open dialog now works instead of crashing
even when parent window is closed. Patch by Roger Serwy.
-rw-r--r-- | Lib/idlelib/IOBinding.py | 17 | ||||
-rw-r--r-- | Lib/idlelib/PyShell.py | 3 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 17 insertions, 6 deletions
diff --git a/Lib/idlelib/IOBinding.py b/Lib/idlelib/IOBinding.py index d20c708..eb7f97b 100644 --- a/Lib/idlelib/IOBinding.py +++ b/Lib/idlelib/IOBinding.py @@ -156,7 +156,8 @@ class IOBinding: self.filename_change_hook() def open(self, event=None, editFile=None): - if self.editwin.flist: + flist = self.editwin.flist + if flist: if not editFile: filename = self.askopenfile() else: @@ -167,16 +168,22 @@ class IOBinding: # we open a new window. But we won't replace the # shell window (which has an interp(reter) attribute), which # gets set to "not modified" at every new prompt. + # Also, make sure the current window has not been closed, + # since it can be closed during the Open File dialog. try: interp = self.editwin.interp except AttributeError: interp = None - if not self.filename and self.get_saved() and not interp: - self.editwin.flist.open(filename, self.loadfile) + + if self.editwin and not self.filename and \ + self.get_saved() and not interp: + flist.open(filename, self.loadfile) else: - self.editwin.flist.open(filename) + flist.open(filename) else: - self.text.focus_set() + if self.text: + self.text.focus_set() + return "break" # # Code for use outside IDLE: diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 74a37db..edb4f37 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -1435,7 +1435,8 @@ def main(): if tkversionwarning: shell.interp.runcommand(''.join(("print('", tkversionwarning, "')"))) - root.mainloop() + while flist.inversedict: # keep IDLE running while files are open. + root.mainloop() root.destroy() if __name__ == "__main__": @@ -67,6 +67,9 @@ Core and Builtins Library ------- +- Issue #10365: File open dialog now works instead of crashing + even when parent window is closed. Patch by Roger Serwy. + - Issue #14876: Use user-selected font for highlight configuration. - Issue #14920: Fix the help(urllib.parse) failure on locale C on terminals. |