Mercurial > emacs
changeset 1656:a532c5a23984
* xdisp.c (redisplay): Call FRAME_SAMPLE_VISIBILITY to set the
visible and iconified flags appropriately for each frame.
(message1): Call FRAME_SAMPLE_VISIBILITY to set the visible and
iconified flags for the minibuffer frame.
* xdisp.c (redisplay): Use FOR_EACH_FRAME to apply
redisplay_windows to the root window of each frame. This makes a
#ifdef MULTI_FRAME unneeded, but it also means we recompute
buffer_shared from scratch even on non-MULTI_FRAME configurations.
Don't skip elements of Vframe_list that aren't frames; go ahead
and crash here.
* xdisp.c (redisplay): Remove #ifdef MULTI_FRAME around the code
which updates separate minibuffer frames specially; there's
nothing there that won't work on a single-frame configuration.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sun, 06 Dec 1992 22:20:47 +0000 |
parents | 05e84e6c7d04 |
children | 14ff323eab0a |
files | src/xdisp.c |
diffstat | 1 files changed, 18 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Sun Dec 06 22:19:47 1992 +0000 +++ b/src/xdisp.c Sun Dec 06 22:20:47 1992 +0000 @@ -191,6 +191,7 @@ choose_minibuf_frame (); minibuf_frame = WINDOW_FRAME (XWINDOW (minibuf_window)); + FRAME_SAMPLE_VISIBILITY (XFRAME (minibuf_frame)); if (FRAME_VISIBLE_P (selected_frame) && ! FRAME_VISIBLE_P (XFRAME (minibuf_frame))) Fmake_frame_visible (WINDOW_FRAME (XWINDOW (minibuf_window))); @@ -346,6 +347,18 @@ if (noninteractive) return; + /* Set the visible flags for all frames. + Do this before checking for resized or garbaged frames; they want + to know if their frames are visible. + See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */ + { + Lisp_Object tail; + FRAME_PTR f; + + FOR_EACH_FRAME (tail, f) + FRAME_SAMPLE_VISIBILITY (f); + } + /* Notice any pending interrupt request to change frame size. */ do_pending_window_change (); @@ -476,28 +489,16 @@ if (all_windows) { -#ifdef MULTI_FRAME Lisp_Object tail; + FRAME_PTR f; /* Recompute # windows showing selected buffer. This will be incremented each time such a window is displayed. */ buffer_shared = 0; - for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr) - { - FRAME_PTR f; - - if (XTYPE (XCONS (tail)->car) != Lisp_Frame) - continue; - - f = XFRAME (XCONS (tail)->car); - if (f->visible) - /* Redraw its windows. */ - redisplay_windows (FRAME_ROOT_WINDOW (f)); - } -#else - redisplay_windows (FRAME_ROOT_WINDOW (f)); -#endif /* not MULTI_FRAME */ + FOR_EACH_FRAME (tail, f) + if (FRAME_VISIBLE_P (f)) + redisplay_windows (FRAME_ROOT_WINDOW (f)); } else if (FRAME_VISIBLE_P (selected_frame)) { @@ -542,7 +543,7 @@ { if (FRAME_VISIBLE_P (selected_frame)) pause = update_frame (selected_frame, 0, 0); -#ifdef MULTI_FRAME + /* We may have called echo_area_display at the top of this function. If the echo area is on another frame, that may have put text on a frame other than the selected one, so the @@ -555,7 +556,6 @@ if (mini_frame != selected_frame) pause |= update_frame (mini_frame, 0, 0); } -#endif } /* If frame does not match, prevent doing single-line-update next time.