From 1bf4c2d2c9cc70f9b3de8a8b54dde20e5939bd50 Mon Sep 17 00:00:00 2001
From: "Kurt B. Kaiser" <kbk@shore.net>
Date: Sun, 21 Jul 2002 01:24:28 +0000
Subject: [PATCH] Bug: clearing the shell undo list after a prompt was allowing
 files to be opened on top of the shell instead of in a new window.

---
 Lib/idlelib/IOBinding.py | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/Lib/idlelib/IOBinding.py b/Lib/idlelib/IOBinding.py
index eb901dc60e..496bc43183 100644
--- a/Lib/idlelib/IOBinding.py
+++ b/Lib/idlelib/IOBinding.py
@@ -87,17 +87,23 @@ class IOBinding:
             else:
                 filename=editFile
             if filename:
-                # if the current window has no filename and hasn't been
-                #   modified, we replace it's contents (no loss).  Otherwise
-                #   we open a new window.
-                if not self.filename and self.get_saved():
+                # If the current window has no filename and hasn't been
+                # modified, we replace its contents (no loss).  Otherwise
+                # we open a new window.  But we won't replace the
+                # shell window (which has an interp(reter) attribute), which
+                # gets set to "not modified" at every new prompt.
+                try:
+                    interp = self.editwin.interp
+                except:
+                    interp = None
+                if not self.filename and self.get_saved() and not interp:
                     self.editwin.flist.open(filename, self.loadfile)
                 else:
                     self.editwin.flist.open(filename)
             else:
                 self.text.focus_set()
-
             return "break"
+        #
         # Code for use outside IDLE:
         if self.get_saved():
             reply = self.maybesave()
-- 
2.40.0