mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
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
This commit is contained in:
parent
ee4bb6612a
commit
5c3df35b6b
2 changed files with 16 additions and 6 deletions
|
@ -3,6 +3,10 @@ What's New in IDLE 1.2a0?
|
||||||
|
|
||||||
*Release date: XX-XXX-2005*
|
*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
|
- The remote procedure call module rpc.py can now access data attributes of
|
||||||
remote registered objects. Changes to these attributes are local, however.
|
remote registered objects. Changes to these attributes are local, however.
|
||||||
|
|
||||||
|
|
|
@ -910,6 +910,9 @@ class PyShell(OutputWindow):
|
||||||
parent=self.text)
|
parent=self.text)
|
||||||
if response == False:
|
if response == False:
|
||||||
return "cancel"
|
return "cancel"
|
||||||
|
if self.reading:
|
||||||
|
self.top.quit()
|
||||||
|
self.canceled = True
|
||||||
self.closing = True
|
self.closing = True
|
||||||
# Wait for poll_subprocess() rescheduling to stop
|
# Wait for poll_subprocess() rescheduling to stop
|
||||||
self.text.after(2 * self.pollinterval, self.close2)
|
self.text.after(2 * self.pollinterval, self.close2)
|
||||||
|
@ -974,10 +977,12 @@ class PyShell(OutputWindow):
|
||||||
save = self.reading
|
save = self.reading
|
||||||
try:
|
try:
|
||||||
self.reading = 1
|
self.reading = 1
|
||||||
self.top.mainloop()
|
self.top.mainloop() # nested mainloop()
|
||||||
finally:
|
finally:
|
||||||
self.reading = save
|
self.reading = save
|
||||||
line = self.text.get("iomark", "end-1c")
|
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):
|
if isinstance(line, unicode):
|
||||||
import IOBinding
|
import IOBinding
|
||||||
try:
|
try:
|
||||||
|
@ -987,10 +992,11 @@ class PyShell(OutputWindow):
|
||||||
self.resetoutput()
|
self.resetoutput()
|
||||||
if self.canceled:
|
if self.canceled:
|
||||||
self.canceled = 0
|
self.canceled = 0
|
||||||
raise KeyboardInterrupt
|
if not use_subprocess:
|
||||||
|
raise KeyboardInterrupt
|
||||||
if self.endoffile:
|
if self.endoffile:
|
||||||
self.endoffile = 0
|
self.endoffile = 0
|
||||||
return ""
|
line = ""
|
||||||
return line
|
return line
|
||||||
|
|
||||||
def isatty(self):
|
def isatty(self):
|
||||||
|
@ -1009,13 +1015,13 @@ class PyShell(OutputWindow):
|
||||||
return "break"
|
return "break"
|
||||||
self.endoffile = 0
|
self.endoffile = 0
|
||||||
self.canceled = 1
|
self.canceled = 1
|
||||||
if self.reading:
|
if (self.executing and self.interp.rpcclt):
|
||||||
self.top.quit()
|
|
||||||
elif (self.executing and self.interp.rpcclt):
|
|
||||||
if self.interp.getdebugger():
|
if self.interp.getdebugger():
|
||||||
self.interp.restart_subprocess()
|
self.interp.restart_subprocess()
|
||||||
else:
|
else:
|
||||||
self.interp.interrupt_subprocess()
|
self.interp.interrupt_subprocess()
|
||||||
|
if self.reading:
|
||||||
|
self.top.quit() # exit the nested mainloop() in readline()
|
||||||
return "break"
|
return "break"
|
||||||
|
|
||||||
def eof_callback(self, event):
|
def eof_callback(self, event):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue