Index: Source/NSApplication.m
===================================================================
--- Source/NSApplication.m	(revision 26954)
+++ Source/NSApplication.m	(working copy)
@@ -2049,37 +2049,35 @@
 {
   NSWindow	*keyWindow;
   NSWindow	*mainWindow;
-  id	resp;
+  id	resp, delegate;
 
   keyWindow = [self keyWindow];
   if (keyWindow != nil)
     {
       resp = [keyWindow firstResponder];
-      while (resp != nil && resp != keyWindow)
+      while (resp != nil && resp != self)
 	{
 	  if ([resp respondsToSelector: aSelector])
 	    {
 	      return resp;
 	    }
+	  if (resp == keyWindow)
+	    {
+	      delegate = [keyWindow delegate];
+	      if (delegate != nil && [delegate respondsToSelector: aSelector])
+	        {
+		  return delegate;
+		}
+	    }
 	  resp = [resp nextResponder];
 	}
-      if ([keyWindow respondsToSelector: aSelector])
-	{
-	  return keyWindow;
-	}
 
-      resp = [keyWindow delegate];
-      if (resp != nil && [resp respondsToSelector: aSelector])
-	{
-	  return resp;
-	}
-
       if ([NSDocumentController isDocumentBasedApplication])
 	{
 	  resp = [[NSDocumentController sharedDocumentController]
 		   documentForWindow: keyWindow];
 	  
-	  if (resp != nil  && [resp respondsToSelector: aSelector])
+	  if (resp != nil && [resp respondsToSelector: aSelector])
 	    {
 	      return resp;
 	    }
@@ -2093,31 +2091,29 @@
   if (keyWindow != mainWindow && mainWindow != nil)
     {
       resp = [mainWindow firstResponder];
-      while (resp != nil && resp != mainWindow)
+      while (resp != nil && resp != self)
 	{
 	  if ([resp respondsToSelector: aSelector])
 	    {
 	      return resp;
 	    }
+	  if (resp == mainWindow)
+	    {
+	      delegate = [mainWindow delegate];
+	      if (delegate != nil && [delegate respondsToSelector: aSelector])
+	        {
+		  return delegate;
+		}
+	    }
 	  resp = [resp nextResponder];
 	}
-      if ([mainWindow respondsToSelector: aSelector])
-	{
-	  return mainWindow;
-	}
 
-      resp = [mainWindow delegate];
-      if (resp != nil && [resp respondsToSelector: aSelector])
-	{
-	  return resp;
-	}
-
       if ([NSDocumentController isDocumentBasedApplication])
 	{
 	  resp = [[NSDocumentController sharedDocumentController]
 		   documentForWindow: mainWindow];
 	  
-	  if (resp != nil  && [resp respondsToSelector: aSelector])
+	  if (resp != nil && [resp respondsToSelector: aSelector])
 	    {
 	      return resp;
 	    }	  
