summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2012-05-27 00:29:25 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2012-05-27 00:29:25 (GMT)
commit935d5eb43fa877aa9a418ef8369f95f250fb0dc1 (patch)
treef5cf3d29387be27c765cff55b6a90ae793171d12 /Lib
parent26cdf1fe5b4c42336a244ad8921bc660ff6819b4 (diff)
parentcd6b8c67ceb4230198de9cdc971b27848c5391f0 (diff)
downloadcpython-935d5eb43fa877aa9a418ef8369f95f250fb0dc1.zip
cpython-935d5eb43fa877aa9a418ef8369f95f250fb0dc1.tar.gz
cpython-935d5eb43fa877aa9a418ef8369f95f250fb0dc1.tar.bz2
Merge with 3.2
Issue #10365: File open dialog now works instead of crashing even when parent window is closed. Patch by Roger Serwy.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/IOBinding.py17
-rw-r--r--Lib/idlelib/PyShell.py3
2 files changed, 14 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 c524d61..0eefc93 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -1451,7 +1451,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__":