[Python-checkins] python/dist/src/Lib/idlelib NEWS.txt, 1.50,
1.51 PyShell.py, 1.93, 1.94
kbk at users.sourceforge.net
kbk at users.sourceforge.net
Thu Dec 23 05:21:02 CET 2004
Update of /cvsroot/python/python/dist/src/Lib/idlelib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11960
Modified Files:
NEWS.txt PyShell.py
Log Message:
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
Index: NEWS.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/idlelib/NEWS.txt,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- NEWS.txt 21 Dec 2004 22:10:32 -0000 1.50
+++ NEWS.txt 23 Dec 2004 04:20:59 -0000 1.51
@@ -3,6 +3,10 @@
*Release date: XX-XXX-2005*
+- 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
+
- The remote procedure call module rpc.py can now access data attributes of
remote registered objects. Changes to these attributes are local, however.
Index: PyShell.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/idlelib/PyShell.py,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -d -r1.93 -r1.94
--- PyShell.py 21 Dec 2004 22:10:32 -0000 1.93
+++ PyShell.py 23 Dec 2004 04:20:59 -0000 1.94
@@ -910,6 +910,9 @@
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 @@
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 @@
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 @@
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):
More information about the Python-checkins
mailing list