diff options
author | Ned Deily <nad@acm.org> | 2013-12-11 00:21:58 (GMT) |
---|---|---|
committer | Ned Deily <nad@acm.org> | 2013-12-11 00:21:58 (GMT) |
commit | 278543d5392967fb4bfe2d3b3f71c2281500c458 (patch) | |
tree | ede425a423f6db328e94e0033757ca29569d3f7b | |
parent | b06231a9c98210c1b01f209cca5b37c005036a46 (diff) | |
download | cpython-278543d5392967fb4bfe2d3b3f71c2281500c458.zip cpython-278543d5392967fb4bfe2d3b3f71c2281500c458.tar.gz cpython-278543d5392967fb4bfe2d3b3f71c2281500c458.tar.bz2 |
Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial
shell window is present. (Original patch by Terry Reedy)
-rwxr-xr-x[-rw-r--r--] | Lib/idlelib/PyShell.py | 25 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 17 insertions, 11 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 89f32a7..be64aca 100644..100755 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -1546,20 +1546,22 @@ def main(): args.remove(filename) if not args: flist.new() + if enable_shell: shell = flist.open_shell() if not shell: return # couldn't open shell - if macosxSupport.runningAsOSXApp() and flist.dict: # On OSX: when the user has double-clicked on a file that causes # IDLE to be launched the shell window will open just in front of # the file she wants to see. Lower the interpreter window when # there are open files. shell.top.lower() + else: + shell = flist.pyshell - shell = flist.pyshell - # handle remaining options: + # Handle remaining options. If any of these are set, enable_shell + # was set also, so shell must be true to reach here. if debug: shell.open_debugger() if startup: @@ -1567,7 +1569,7 @@ def main(): os.environ.get("PYTHONSTARTUP") if filename and os.path.isfile(filename): shell.interp.execfile(filename) - if shell and cmd or script: + if cmd or script: shell.interp.runcommand("""if 1: import sys as _sys _sys.argv = %r @@ -1578,13 +1580,14 @@ def main(): elif script: shell.interp.prepend_syspath(script) shell.interp.execfile(script) - - # Check for problematic OS X Tk versions and print a warning message - # in the IDLE shell window; this is less intrusive than always opening - # a separate window. - tkversionwarning = macosxSupport.tkVersionWarning(root) - if tkversionwarning: - shell.interp.runcommand(''.join(("print('", tkversionwarning, "')"))) + elif shell: + # If there is a shell window and no cmd or script in progress, + # check for problematic OS X Tk versions and print a warning + # message in the IDLE shell window; this is less intrusive + # than always opening a separate window. + tkversionwarning = macosxSupport.tkVersionWarning(root) + if tkversionwarning: + shell.interp.runcommand("print('%s')" % tkversionwarning) while flist.inversedict: # keep IDLE running while files are open. root.mainloop() @@ -74,6 +74,9 @@ IDLE - Issue #19481: print() of unicode, str or bytearray subclass instance in IDLE no more hangs. +- Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial + shell window is present. + Tests ----- |