# HG changeset patch # User Gerd Moellmann # Date 962392825 0 # Node ID c38afaed3dd075575e4c627c8c34c49ad2db5962 # Parent 195fbbbd4cba324a17049ffd81681d5b735586ef (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. diff -r 195fbbbd4cba -r c38afaed3dd0 src/frame.c --- 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;