summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2004-12-23 04:32:25 (GMT)
committerKurt B. Kaiser <kbk@shore.net>2004-12-23 04:32:25 (GMT)
commit8e1ba59add1cc87b7b0a10ba1c568653b5aa2076 (patch)
tree4f2c735e60dc6650b181f127f24b91bd8a6cd145 /Lib
parent2793e18b1b78daaaaab95b1ea7a299e64f92c46a (diff)
downloadcpython-8e1ba59add1cc87b7b0a10ba1c568653b5aa2076.zip
cpython-8e1ba59add1cc87b7b0a10ba1c568653b5aa2076.tar.gz
cpython-8e1ba59add1cc87b7b0a10ba1c568653b5aa2076.tar.bz2
The GUI was hanging if the shell window was closed while a raw_input()
was pending. Restored the quit() of the readline() mainloop(). http://mail.python.org/pipermail/idle-dev/2004-December/002307.html M NEWS.txt M PyShell.py M idlever.py
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/NEWS.txt9
-rw-r--r--Lib/idlelib/PyShell.py18
-rw-r--r--Lib/idlelib/idlever.py2
3 files changed, 22 insertions, 7 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 6337e7c..86a6040 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -1,3 +1,12 @@
+What's New in IDLE 1.1.1?
+=======================
+
+*Release date: XX-DEC-2004*
+
+- The GUI was hanging if the shell window was closed while a raw_input()
+ was pending. Restored the quit() of the readline() mainloop().
+ http://mail.python.org/pipermail/idle-dev/2004-December/002307.html
+
What's New in IDLE 1.1?
=======================
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 887d638..387b537 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -910,6 +910,9 @@ class PyShell(OutputWindow):
parent=self.text)
if response == False:
return "cancel"
+ if self.reading:
+ self.top.quit()
+ self.canceled = True
self.closing = True
# Wait for poll_subprocess() rescheduling to stop
self.text.after(2 * self.pollinterval, self.close2)
@@ -974,10 +977,12 @@ class PyShell(OutputWindow):
save = self.reading
try:
self.reading = 1
- self.top.mainloop()
+ self.top.mainloop() # nested mainloop()
finally:
self.reading = save
line = self.text.get("iomark", "end-1c")
+ if len(line) == 0: # may be EOF if we quit our mainloop with Ctrl-C
+ line = "\n"
if isinstance(line, unicode):
import IOBinding
try:
@@ -987,10 +992,11 @@ class PyShell(OutputWindow):
self.resetoutput()
if self.canceled:
self.canceled = 0
- raise KeyboardInterrupt
+ if not use_subprocess:
+ raise KeyboardInterrupt
if self.endoffile:
self.endoffile = 0
- return ""
+ line = ""
return line
def isatty(self):
@@ -1009,13 +1015,13 @@ class PyShell(OutputWindow):
return "break"
self.endoffile = 0
self.canceled = 1
- if self.reading:
- self.top.quit()
- elif (self.executing and self.interp.rpcclt):
+ if (self.executing and self.interp.rpcclt):
if self.interp.getdebugger():
self.interp.restart_subprocess()
else:
self.interp.interrupt_subprocess()
+ if self.reading:
+ self.top.quit() # exit the nested mainloop() in readline()
return "break"
def eof_callback(self, event):
diff --git a/Lib/idlelib/idlever.py b/Lib/idlelib/idlever.py
index aba89af..46b58aa 100644
--- a/Lib/idlelib/idlever.py
+++ b/Lib/idlelib/idlever.py
@@ -1 +1 @@
-IDLE_VERSION = "1.1"
+IDLE_VERSION = "1.1.1"