changeset 29987:c38afaed3dd0

(next_frame): Don't check frame-focus redirection in case MINIBUF is a window. Doing so excludes frames using MINIBUF unless their focus is redirected, which contradicts the specification of next-frame, and leads to infinite loops in certain situations when cycling through windows with next-window.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 30 Jun 2000 19:20:25 +0000
parents 195fbbbd4cba
children ae9578eb3d45
files src/frame.c
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/frame.c	Fri Jun 30 10:00:58 2000 +0000
+++ b/src/frame.c	Fri Jun 30 19:20:25 2000 +0000
@@ -934,7 +934,7 @@
 		if (FRAME_VISIBLE_P (XFRAME (f)))
 		  return f;
 	      }
-	    else if (XFASTINT (minibuf) == 0)
+	    else if (INTEGERP (minibuf) && XINT (minibuf) == 0)
 	      {
 		FRAME_SAMPLE_VISIBILITY (XFRAME (f));
 		if (FRAME_VISIBLE_P (XFRAME (f))
@@ -943,6 +943,10 @@
 	      }
 	    else if (WINDOWP (minibuf))
 	      {
+#if 0 /* I don't think the test for frame focus redirection is
+         correct.  This excludes frames "using the current minibuffer"
+         when their focus isn't redirected, which contradicts the doc
+         string of next-frame.  --gerd, 2000-06-30 */
 		if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
 		    /* Check that F either is, or has forwarded its focus to,
 		       MINIBUF's frame.  */
@@ -950,6 +954,11 @@
 			|| EQ (WINDOW_FRAME (XWINDOW (minibuf)),
 			       FRAME_FOCUS_FRAME (XFRAME (f)))))
 		  return f;
+#else /* not 0 */
+		if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
+		    || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f))
+		  return f;
+#endif /* not 0 */
 	      }
 	    else
 	      return f;