diff --git a/Lib/idlelib/OutputWindow.py b/Lib/idlelib/OutputWindow.py
index 0782eaf..5a15873 100644
--- a/Lib/idlelib/OutputWindow.py
+++ b/Lib/idlelib/OutputWindow.py
@@ -58,6 +58,7 @@
         r'file "([^"]*)", line (\d+)',
         r'([^\s]+)\((\d+)\)',
         r'([^\s]+):\s*(\d+):',
+        r'^\s*(\S+.*?):\s*(\d+):',  # Win path with spaces, trim leading spaces
     ]
 
     file_line_progs = None
@@ -91,17 +92,17 @@
 
     def _file_line_helper(self, line):
         for prog in self.file_line_progs:
-            m = prog.search(line)
-            if m:
-                break
+            match = prog.search(line)
+            if match:
+                filename, lineno = match.group(1, 2)
+                try:
+                    f = open(filename, "r")
+                    f.close()
+                    break
+                except IOError:
+                    continue
         else:
             return None
-        filename, lineno = m.group(1, 2)
-        try:
-            f = open(filename, "r")
-            f.close()
-        except IOError:
-            return None
         try:
             return filename, int(lineno)
         except TypeError:
@@ -134,19 +135,3 @@
                 text.tag_configure(tag, **cnf)
         text.tag_raise('sel')
         self.write = self.owin.write
-
-#class PseudoFile:
-#
-#      def __init__(self, owin, tags, mark="end"):
-#          self.owin = owin
-#          self.tags = tags
-#          self.mark = mark
-
-#      def write(self, s):
-#          self.owin.write(s, self.tags, self.mark)
-
-#      def writelines(self, l):
-#          map(self.write, l)
-
-#      def flush(self):
-#          pass
