Mercurial > emacs
changeset 2252:9793d8654e23
* frame.h (FOR_EACH_FRAME): Change the definition so that
FRAME_VAR is a lisp object.
* dispnew.c (WINDOW_CHANGE_SIGNAL, do_pending_window_change):
Adjusted appropriately.
* xdisp.c (redisplay): Adjusted appropriately.
* dispnew.c (Fredraw_frame): Give this appropriate definitions for
MULTI_FRAME and non-MULTI_FRAME configurations.
(Fredraw_display): Give this a non-MULTI_FRAME-dependent definition.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Thu, 18 Mar 1993 22:50:00 +0000 |
parents | 216f86e5891d |
children | fe5302520efd |
files | src/dispnew.c src/frame.h src/xdisp.c |
diffstat | 3 files changed, 55 insertions(+), 56 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dispnew.c Thu Mar 18 22:31:30 1993 +0000 +++ b/src/dispnew.c Thu Mar 18 22:50:00 1993 +0000 @@ -165,36 +165,6 @@ return Qnil; } -DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "", - "Clear and redisplay all visible frames.") - () -{ - Lisp_Object frame, tail; - - for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr) - { - frame = XCONS (tail)->car; - - /* If we simply redrew all visible frames, whether or not they - were garbaged, then this would make all frames clear and - redraw whenever a new frame is created or an existing frame - is de-iconified; those events set the global frame_garbaged - flag, to which redisplay responds by calling this function. - - This used to redraw all visible frames; the only advantage of - that approach is that if a frame changes from invisible to - visible without setting its garbaged flag, it still gets - redisplayed. But that should never happen; since invisible - frames are not updated, they should always be marked as - garbaged when they become visible again. If that doesn't - happen, it's a bug in the visibility code, not a bug here. */ - if (FRAME_VISIBLE_P (XFRAME (frame)) - && FRAME_GARBAGED_P (XFRAME (frame))) - Fredraw_frame (frame); - } - return Qnil; -} - redraw_frame (f) FRAME_PTR f; { @@ -203,11 +173,12 @@ Fredraw_frame (frame); } -#else /* not MULTI_FRAME */ +#else -DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "", - "Clear screen and output again what is supposed to appear on it.") - () +DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, "", + "Clear frame FRAME and output again what is supposed to appear on it.") + (frame) + Lisp_Object frame; { update_begin (0); set_terminal_modes (); @@ -222,7 +193,35 @@ return Qnil; } -#endif /* not MULTI_FRAME */ +#endif + +DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "", + "Clear and redisplay all visible frames.") + () +{ + Lisp_Object tail, frame; + + FOR_EACH_FRAME (tail, frame) + /* If we simply redrew all visible frames, whether or not they + were garbaged, then this would make all frames clear and + nredraw whenever a new frame is created or an existing frame + is de-iconified; those events set the global frame_garbaged + flag, to which redisplay responds by calling this function. + + This used to redraw all visible frames; the only advantage of + that approach is that if a frame changes from invisible to + visible without setting its garbaged flag, it still gets + redisplayed. But that should never happen; since invisible + frames are not updated, they should always be marked as + garbaged when they become visible again. If that doesn't + happen, it's a bug in the visibility code, not a bug here. */ + if (FRAME_VISIBLE_P (XFRAME (frame)) + && FRAME_GARBAGED_P (XFRAME (frame))) + Fredraw_frame (frame); + + return Qnil; +} + static struct frame_glyphs * make_frame_glyphs (frame, empty) @@ -1605,14 +1604,13 @@ later outside of the signal handler. */ { - Lisp_Object tail; - FRAME_PTR f; + Lisp_Object tail, frame; - FOR_EACH_FRAME (tail, f) + FOR_EACH_FRAME (tail, frame) { - if (FRAME_TERMCAP_P (f)) + if (FRAME_TERMCAP_P (XFRAME (frame))) { - change_frame_size (f, height, width, 0, 1); + change_frame_size (XFRAME (frame), height, width, 0, 1); break; } } @@ -1631,13 +1629,14 @@ /* If window_change_signal should have run before, run it now. */ while (delayed_size_change) { - Lisp_Object tail; - FRAME_PTR f; + Lisp_Object tail, frame; delayed_size_change = 0; - FOR_EACH_FRAME (tail, f) + FOR_EACH_FRAME (tail, frame) { + FRAME_PTR f = XFRAME (frame); + int height = FRAME_NEW_HEIGHT (f); int width = FRAME_NEW_WIDTH (f);
--- a/src/frame.h Thu Mar 18 22:31:30 1993 +0000 +++ b/src/frame.h Thu Mar 18 22:50:00 1993 +0000 @@ -317,9 +317,9 @@ /* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a `for' loop which iterates over the elements of Vframe_list. The - loop will set FRAME_VAR, a FRAME_PTR, to each frame in + loop will set FRAME_VAR, a Lisp_Object, to each frame in Vframe_list in succession and execute the statement. LIST_VAR - should be a Lisp_Object; it is used to iterate through the + should be a Lisp_Object too; it is used to iterate through the Vframe_list. If MULTI_FRAME isn't defined, then this loop expands to something which @@ -327,7 +327,7 @@ #define FOR_EACH_FRAME(list_var, frame_var) \ for ((list_var) = Vframe_list; \ (CONSP (list_var) \ - && (frame_var = XFRAME (XCONS (list_var)->car), 1)); \ + && (frame_var = XCONS (list_var)->car, 1)); \ list_var = XCONS (list_var)->cdr) @@ -412,16 +412,16 @@ /* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a `for' loop which iterates over the elements of Vframe_list. The - loop will set FRAME_VAR, a FRAME_PTR, to each frame in + loop will set FRAME_VAR, a Lisp_Object, to each frame in Vframe_list in succession and execute the statement. LIST_VAR - should be a Lisp_Object; it is used to iterate through the + should be a Lisp_Object too; it is used to iterate through the Vframe_list. If MULTI_FRAME _is_ defined, then this loop expands to a real `for' loop which traverses Vframe_list using LIST_VAR and FRAME_VAR. */ #define FOR_EACH_FRAME(list_var, frame_var) \ - for (frame_var = (FRAME_PTR) 1; frame_var; frame_var = (FRAME_PTR) 0) + for (list_var = Qt; frame_var = selected_frame, ! NILP (list_var); list_var = Qnil) #endif /* not MULTI_FRAME */
--- a/src/xdisp.c Thu Mar 18 22:31:30 1993 +0000 +++ b/src/xdisp.c Thu Mar 18 22:50:00 1993 +0000 @@ -369,11 +369,10 @@ to know if their frames are visible. See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */ { - Lisp_Object tail; - FRAME_PTR f; + Lisp_Object tail, frame; - FOR_EACH_FRAME (tail, f) - FRAME_SAMPLE_VISIBILITY (f); + FOR_EACH_FRAME (tail, frame) + FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); } /* Notice any pending interrupt request to change frame size. */ @@ -504,15 +503,16 @@ if (all_windows) { - Lisp_Object tail; - FRAME_PTR f; + Lisp_Object tail, frame; /* Recompute # windows showing selected buffer. This will be incremented each time such a window is displayed. */ buffer_shared = 0; - FOR_EACH_FRAME (tail, f) + FOR_EACH_FRAME (tail, frame) { + FRAME_PTR f = XFRAME (frame); + /* Mark all the scroll bars to be removed; we'll redeem the ones we want when we redisplay their windows. */ if (condemn_scroll_bars_hook)