Commit 5c3df35b authored by Kurt B. Kaiser's avatar Kurt B. Kaiser

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
parent ee4bb661
...@@ -3,6 +3,10 @@ What's New in IDLE 1.2a0? ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -987,10 +992,11 @@ class PyShell(OutputWindow):
self.resetoutput() self.resetoutput()
if self.canceled: if self.canceled:
self.canceled = 0 self.canceled = 0
if not use_subprocess:
raise KeyboardInterrupt 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): ...@@ -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):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment