changeset 8168:32fbb27091d4

(next_frame, prev_frame): MINIBUF = 0 means try visible frames and iconified frames. (next_frame, prev_frame): Change which frames to use when MINIBUF is a window. (Fnext_frame, Fprevious_frame): Doc fixes.
author Richard M. Stallman <rms@gnu.org>
date Thu, 07 Jul 1994 06:38:42 +0000
parents ae9b49cc645f
children 09a8da4ffadf
files src/frame.c
diffstat 1 files changed, 38 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/frame.c	Thu Jul 07 06:34:07 1994 +0000
+++ b/src/frame.c	Thu Jul 07 06:38:42 1994 +0000
@@ -556,9 +556,10 @@
 
 /* Return the next frame in the frame list after FRAME.
    If MINIBUF is nil, exclude minibuffer-only frames.
-   If MINIBUF is a window, include only frames using that window for
-   their minibuffer.
+   If MINIBUF is a window, include only its own frame
+   and any frame now using that window as the minibuffer.
    If MINIBUF is `visible', include all visible frames.
+   If MINIBUF is 0, include all visible and iconified frames.
    Otherwise, include all frames.  */
 
 Lisp_Object
@@ -604,9 +605,21 @@
 		if (FRAME_VISIBLE_P (XFRAME (f)))
 		  return f;
 	      }
+	    else if (XFASTINT (minibuf) == 0)
+	      {
+		FRAME_SAMPLE_VISIBILITY (XFRAME (f));
+		if (FRAME_VISIBLE_P (XFRAME (f))
+		    || FRAME_ICONIFIED_P (XFRAME (f)))
+		  return f;
+	      }
 	    else if (WINDOWP (minibuf))
 	      {
-		if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf))
+		if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
+		    /* Check that F either is, or has forwarded its focus to,
+		       MINIBUF's frame.  */
+		    && (EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
+			|| EQ (WINDOW_FRAME (XWINDOW (minibuf)),
+			       FRAME_FOCUS_FRAME (XFRAME (f)))))
 		  return f;
 	      }
 	    else
@@ -620,9 +633,10 @@
 
 /* Return the previous frame in the frame list before FRAME.
    If MINIBUF is nil, exclude minibuffer-only frames.
-   If MINIBUF is a window, include only frames using that window for
-   their minibuffer.
+   If MINIBUF is a window, include only its own frame
+   and any frame now using that window as the minibuffer.
    If MINIBUF is `visible', include all visible frames.
+   If MINIBUF is 0, include all visible and iconified frames.
    Otherwise, include all frames.  */
 
 Lisp_Object
@@ -658,7 +672,12 @@
 	}
       else if (XTYPE (minibuf) == Lisp_Window)
 	{
-	  if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf))
+	  if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
+	      /* Check that F either is, or has forwarded its focus to,
+		 MINIBUF's frame.  */
+	      && (EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
+		  || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
+			 FRAME_FOCUS_FRAME (XFRAME (f)))))
 	    prev = f;
 	}
       else if (EQ (minibuf, Qvisible))
@@ -667,6 +686,13 @@
 	  if (FRAME_VISIBLE_P (XFRAME (f)))
 	    prev = f;
 	}
+      else if (XFASTINT (f) == 0)
+	{
+	  FRAME_SAMPLE_VISIBILITY (XFRAME (f));
+	  if (FRAME_VISIBLE_P (XFRAME (f))
+	      || FRAME_ICONIFIED_P (XFRAME (f)))
+	    prev = f;
+	}
       else
 	prev = f;
     }
@@ -689,9 +715,10 @@
 By default, skip minibuffer-only frames.\n\
 If omitted, FRAME defaults to the selected frame.\n\
 If optional argument MINIFRAME is nil, exclude minibuffer-only frames.\n\
-If MINIFRAME is a window, include only frames using that window for their\n\
-minibuffer.\n\
+If MINIBUF is a window, include only its own frame\n\
+and any frame now using that window as the minibuffer.\n\
 If MINIFRAME is `visible', include all visible frames.\n\
+If MINIBUF is 0, include all visible and iconified frames.\n\
 Otherwise, include all frames.")
   (frame, miniframe)
      Lisp_Object frame, miniframe;
@@ -711,9 +738,10 @@
 By default, skip minibuffer-only frames.\n\
 If omitted, FRAME defaults to the selected frame.\n\
 If optional argument MINIFRAME is nil, exclude minibuffer-only frames.\n\
-If MINIFRAME is a window, include only frames using that window for their\n\
-minibuffer.\n\
+If MINIBUF is a window, include only its own frame\n\
+and any frame now using that window as the minibuffer.\n\
 If MINIFRAME is `visible', include all visible frames.\n\
+If MINIBUF is 0, include all visible and iconified frames.\n\
 Otherwise, include all frames.")
   (frame, miniframe)
      Lisp_Object frame, miniframe;