summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRoger Serwy <roger.serwy@gmail.com>2013-04-03 05:43:31 (GMT)
committerRoger Serwy <roger.serwy@gmail.com>2013-04-03 05:43:31 (GMT)
commit1be94cea0fbf779439e415b3ab1e61e390302ab7 (patch)
tree192eaf111925eed13f2e9055659bd06493c60f86 /Lib
parenta64a08467077004b0c1ec789d4e6e651e8bdc847 (diff)
parent6b7a5ae2c100d9a28cc1879b7325dc0e615a3a10 (diff)
downloadcpython-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.py14
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"