Commit eaa7e782 authored by Terry Jan Reedy's avatar Terry Jan Reedy

Issue #10365: File open dialog now works instead of crashing

even when parent window is closed. Patch by Roger Serwy.
parent 42f7b7ec
...@@ -196,7 +196,8 @@ class IOBinding: ...@@ -196,7 +196,8 @@ class IOBinding:
self.filename_change_hook() self.filename_change_hook()
def open(self, event=None, editFile=None): def open(self, event=None, editFile=None):
if self.editwin.flist: flist = self.editwin.flist
if flist:
if not editFile: if not editFile:
filename = self.askopenfile() filename = self.askopenfile()
else: else:
...@@ -207,16 +208,22 @@ class IOBinding: ...@@ -207,16 +208,22 @@ class IOBinding:
# we open a new window. But we won't replace the # we open a new window. But we won't replace the
# shell window (which has an interp(reter) attribute), which # shell window (which has an interp(reter) attribute), which
# gets set to "not modified" at every new prompt. # 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: try:
interp = self.editwin.interp interp = self.editwin.interp
except AttributeError: except AttributeError:
interp = None 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: else:
self.editwin.flist.open(filename) flist.open(filename)
else: else:
self.text.focus_set() if self.text:
self.text.focus_set()
return "break" return "break"
# #
# Code for use outside IDLE: # Code for use outside IDLE:
......
...@@ -1458,7 +1458,8 @@ def main(): ...@@ -1458,7 +1458,8 @@ def main():
if tkversionwarning: if tkversionwarning:
shell.interp.runcommand(''.join(("print('", tkversionwarning, "')"))) shell.interp.runcommand(''.join(("print('", tkversionwarning, "')")))
root.mainloop() while flist.inversedict: # keep IDLE running while files are open.
root.mainloop()
root.destroy() root.destroy()
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -64,6 +64,9 @@ Core and Builtins ...@@ -64,6 +64,9 @@ Core and Builtins
Library 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 #14876: Use user-selected font for highlight configuration.
Patch by Roger Serwy. Patch by Roger Serwy.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment