diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py
index a618ad1..90f9b2c 100644
--- a/Tools/idle/PyShell.py
+++ b/Tools/idle/PyShell.py
@@ -363,12 +363,13 @@
         # Helper for ModifiedInterpreter
         self.resetoutput()
         self.executing = 1
-        self._cancel_check = self.cancel_check
+        ##self._cancel_check = self.cancel_check
         ##sys.settrace(self._cancel_check)
 
     def endexecuting(self):
         # Helper for ModifiedInterpreter
-        sys.settrace(None)
+        ##sys.settrace(None)
+        ##self._cancel_check = None
         self.executing = 0
         self.canceled = 0
 
@@ -386,17 +387,20 @@
             if self.reading:
                 self.top.quit()
             return "cancel"
-        reply = PyShellEditorWindow.close(self)
-        if reply != "cancel":
-            self.flist.pyshell = None
-            # Restore std streams
-            sys.stdout = self.save_stdout
-            sys.stderr = self.save_stderr
-            sys.stdin = self.save_stdin
-            # Break cycles
-            self.interp = None
-            self.console = None
-        return reply
+        return PyShellEditorWindow.close(self)
+
+    def _close(self):
+        # Restore std streams
+        sys.stdout = self.save_stdout
+        sys.stderr = self.save_stderr
+        sys.stdin = self.save_stdin
+        # Break cycles
+        self.interp = None
+        self.console = None
+        self.auto = None
+        self.flist.pyshell = None
+        self.history = None
+        OutputWindow._close(self) # Really EditorWindow._close
 
     def ispythonsource(self, filename):
         # Override this so EditorWindow never removes the colorizer
@@ -731,6 +735,7 @@
 
     shell.begin()
     root.mainloop()
+    root.destroy()
 
 
 if __name__ == "__main__":
