diff options
author | Roger Serwy <roger.serwy@gmail.com> | 2013-04-03 05:43:31 (GMT) |
---|---|---|
committer | Roger Serwy <roger.serwy@gmail.com> | 2013-04-03 05:43:31 (GMT) |
commit | 1be94cea0fbf779439e415b3ab1e61e390302ab7 (patch) | |
tree | 192eaf111925eed13f2e9055659bd06493c60f86 /Lib | |
parent | a64a08467077004b0c1ec789d4e6e651e8bdc847 (diff) | |
parent | 6b7a5ae2c100d9a28cc1879b7325dc0e615a3a10 (diff) | |
download | cpython-1be94cea0fbf779439e415b3ab1e61e390302ab7.zip cpython-1be94cea0fbf779439e415b3ab1e61e390302ab7.tar.gz cpython-1be94cea0fbf779439e415b3ab1e61e390302ab7.tar.bz2 |
#14254: merge with 3.3.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/idlelib/PyShell.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 69fd7b0..b1ef4ca 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -458,6 +458,7 @@ class ModifiedInterpreter(InteractiveInterpreter): self.display_no_subprocess_error() return None self.transfer_path(with_cwd=with_cwd) + console.stop_readline() # annotate restart in shell window and mark it console.text.delete("iomark", "end-1c") if was_executing: @@ -896,6 +897,7 @@ class PyShell(OutputWindow): canceled = False endoffile = False closing = False + _stop_readline_flag = False def set_warning_stream(self, stream): global warning_stream @@ -971,8 +973,7 @@ class PyShell(OutputWindow): parent=self.text) if response is False: return "cancel" - if self.reading: - self.top.quit() + self.stop_readline() self.canceled = True self.closing = True # Wait for poll_subprocess() rescheduling to stop @@ -1030,6 +1031,12 @@ class PyShell(OutputWindow): tkinter._default_root = None # 03Jan04 KBK What's this? return True + def stop_readline(self): + if not self.reading: # no nested mainloop to exit. + return + self._stop_readline_flag = True + self.top.quit() + def readline(self): save = self.reading try: @@ -1037,6 +1044,9 @@ class PyShell(OutputWindow): self.top.mainloop() # nested mainloop() finally: self.reading = save + if self._stop_readline_flag: + self._stop_readline_flag = False + return "" line = self.text.get("iomark", "end-1c") if len(line) == 0: # may be EOF if we quit our mainloop with Ctrl-C line = "\n" |