# HG changeset patch # User Richard M. Stallman # Date 773562847 0 # Node ID ae9b49cc645fe0413a5bad67f7b5b8133e2fd4ea # Parent 6fa3cd9b176dfa6709670c54d40baccfb902b6af (Fnext_window, Fprevious_window): ALL_FRAMES = 0 means try both visible frames and iconified frames. (window_loop): Likewise, for FRAMES = 0. (Fget_buffer_window): Likewise, for FRAME = 0. (Fdisplay_buffer): Pass 0 to Fget_buffer_window; if the frame is iconified, make it visible. diff -r 6fa3cd9b176d -r ae9b49cc645f src/window.c --- a/src/window.c Thu Jul 07 06:29:09 1994 +0000 +++ b/src/window.c Thu Jul 07 06:34:07 1994 +0000 @@ -850,6 +850,7 @@ Optional third arg ALL-FRAMES t means include windows on all frames.\n\ ALL-FRAMES nil or omitted means cycle within the frames as specified\n\ above. ALL-FRAMES = `visible' means include windows on all visible frames.\n\ +ALL-FRAMES = 0 means include windows on all visible and iconified frames.\n\ Anything else means restrict to WINDOW's frame.\n\ \n\ If you use consistent values for MINIBUF and ALL-FRAMES, you can use\n\ @@ -890,10 +891,14 @@ : Qnil); else if (EQ (all_frames, Qvisible)) ; + else if (XFASTINT (all_frames) == 0) + ; else if (! EQ (all_frames, Qt)) all_frames = Qnil; /* Now all_frames is t meaning search all frames, nil meaning search just current frame, + visible meaning search just visible frames, + 0 meaning search visible and iconified frames, or a window, meaning search the frame that window belongs to. */ #endif @@ -967,6 +972,7 @@ Optional third arg ALL-FRAMES t means include windows on all frames.\n\ ALL-FRAMES nil or omitted means cycle within the frames as specified\n\ above. ALL-FRAMES = `visible' means include windows on all visible frames.\n\ +ALL-FRAMES = 0 means include windows on all visible and iconified frames.\n\ Anything else means restrict to WINDOW's frame.\n\ \n\ If you use consistent values for MINIBUF and ALL-FRAMES, you can use\n\ @@ -1008,10 +1014,14 @@ : Qnil); else if (EQ (all_frames, Qvisible)) ; + else if (XFASTINT (all_frames) == 0) + ; else if (! EQ (all_frames, Qt)) all_frames = Qnil; /* Now all_frames is t meaning search all frames, nil meaning search just current frame, + visible meaning search just visible frames, + 0 meaning search visible and iconified frames, or a window, meaning search the frame that window belongs to. */ #endif @@ -1154,6 +1164,8 @@ frame = 0; if (frame) frame_arg = Qlambda; + else if (XFASTINT (frames) == 0) + frame_arg = frames; else if (EQ (frames, Qvisible)) frame_arg = frames; #else @@ -1332,6 +1344,7 @@ DEFUN ("get-buffer-window", Fget_buffer_window, Sget_buffer_window, 1, 2, 0, "Return a window currently displaying BUFFER, or nil if none.\n\ If optional argument FRAME is `visible', search all visible frames.\n\ +If optional argument FRAME is 0, search all visible and iconified frames.\n\ If FRAME is t, search all frames.\n\ If FRAME is nil, search only the selected frame.\n\ If FRAME is a frame, search only that frame.") @@ -1752,14 +1765,18 @@ #ifdef MULTI_FRAME /* If pop_up_frames, - look for a window showing BUFFER on any visible frame. */ - window = Fget_buffer_window (buffer, pop_up_frames ? Qvisible : Qnil); + look for a window showing BUFFER on any visible or iconified frame. */ + window = Fget_buffer_window (buffer, pop_up_frames ? make_number (0) : Qnil); #else window = Fget_buffer_window (buffer, Qnil); #endif if (!NILP (window) && (NILP (not_this_window) || !EQ (window, selected_window))) - return window; + { + if (FRAME_ICONIFIED_P (XFRAME (WINDOW_FRAME (XWINDOW (window))))) + Fmake_frame_visible (WINDOW_FRAME (XWINDOW (window))); + return window; + } /* Certain buffer names get special handling. */ if (! NILP (Vspecial_display_function))