diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index b927b9c..a7ac7b7 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,9 @@
 
 *Release date: XX-XXX-2009*
 
+- OutputWindow/PyShell right click menu "Go to file/line" wasn't working with
+  file paths containing spaces.  Bug 5559.
+
 - Windows: Version string for the .chm help file changed, file not being
   accessed  Patch 5783 Guilherme Polo
 
diff --git a/Lib/idlelib/OutputWindow.py b/Lib/idlelib/OutputWindow.py
index 787e9b0..a243a2d 100644
--- a/Lib/idlelib/OutputWindow.py
+++ b/Lib/idlelib/OutputWindow.py
@@ -63,6 +63,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
@@ -96,17 +97,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:
@@ -139,19 +140,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
