diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index fcb1612..2303537 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -139,7 +139,7 @@
             flist.inversedict[self] = key
             if key:
                 flist.dict[key] = self
-            text.bind("<<open-new-window>>", self.flist.new_callback)
+            text.bind("<<open-new-window>>", self.new_callback)
             text.bind("<<close-all-windows>>", self.flist.close_all_callback)
             text.bind("<<open-class-browser>>", self.open_class_browser)
             text.bind("<<open-path-browser>>", self.open_path_browser)
@@ -182,7 +182,7 @@
         self.UpdateRecentFilesList()
 
         if filename:
-            if os.path.exists(filename):
+            if os.path.exists(filename) and not os.path.isdir(filename):
                 io.loadfile(filename)
             else:
                 io.set_filename(filename)
@@ -210,6 +210,11 @@
             self.extensions['AutoIndent'].set_indentation_params(
                 self.ispythonsource(filename))
 
+    def new_callback(self, event):
+        dirname, basename = self.io.defaultfilename()
+        self.flist.new(dirname)
+        return "break"
+
     def set_status_bar(self):
         self.status_bar = self.MultiStatusBar(self.top)
         self.status_bar.set_label('column', 'Col: ?', side=RIGHT)
diff --git a/Lib/idlelib/FileList.py b/Lib/idlelib/FileList.py
index e01ce3c..7a46afa 100644
--- a/Lib/idlelib/FileList.py
+++ b/Lib/idlelib/FileList.py
@@ -58,8 +58,8 @@
         if edit is not None and lineno is not None:
             edit.gotoline(lineno)
 
-    def new(self):
-        return self.EditorWindow(self)
+    def new(self, filename=None):
+        return self.EditorWindow(self, filename)
 
     def new_callback(self, event):
         self.new()
diff --git a/Lib/idlelib/IOBinding.py b/Lib/idlelib/IOBinding.py
index cd2638c..e207750 100644
--- a/Lib/idlelib/IOBinding.py
+++ b/Lib/idlelib/IOBinding.py
@@ -179,12 +179,18 @@
         self.filename_change_hook = hook
 
     filename = None
+    dirname = None
 
     def set_filename(self, filename):
-        self.filename = filename
-        self.set_saved(1)
-        if self.filename_change_hook:
-            self.filename_change_hook()
+        if filename and os.path.isdir(filename):
+            self.filename = None
+            self.dirname = filename
+        else:
+            self.filename = filename
+            self.dirname = None
+            self.set_saved(1)
+            if self.filename_change_hook:
+                self.filename_change_hook()
 
     def open(self, event=None, editFile=None):
         if self.editwin.flist:
@@ -505,6 +511,8 @@
     def defaultfilename(self, mode="open"):
         if self.filename:
             return os.path.split(self.filename)
+        elif self.dirname:
+            return self.dirname, ""
         else:
             try:
                 pwd = os.getcwd()
