Mercurial > emacs
changeset 18652:8873a10882dc
(display_menu_bar): Always pass W to display_string.
(redisplay_internal): At the end, if more frames have
become visible, repeat the redisplay.
(decode_mode_spec): Don't display subprocess coding systems.
Don't display EOL for keyboard and terminal coding systems.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 07 Jul 1997 02:39:39 +0000 |
parents | 982814f78d0d |
children | 2c1f73252c1c |
files | src/xdisp.c |
diffstat | 1 files changed, 34 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Mon Jul 07 00:59:44 1997 +0000 +++ b/src/xdisp.c Mon Jul 07 02:39:39 1997 +0000 @@ -864,6 +864,7 @@ int all_windows; register int tlbufpos, tlendpos; struct position pos; + int number_of_frames_redisplayed; if (noninteractive) return; @@ -888,12 +889,14 @@ 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. */ + number_of_frames_redisplayed = 0; { Lisp_Object tail, frame; FOR_EACH_FRAME (tail, frame) { FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); + number_of_frames_redisplayed++; /* Clear out all the display lines in which we will generate the glyphs to display. */ @@ -1304,6 +1307,30 @@ request_sigio (); start_polling (); + /* If something has become visible now which was not before, + redisplay again, so that we get them. */ + if (!pause) + { + Lisp_Object tail, frame; + int new_count = 0; + + FOR_EACH_FRAME (tail, frame) + { + int this_is_visible = 0; + if (XFRAME (frame)->visible) + this_is_visible = 1; + FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); + if (XFRAME (frame)->visible) + this_is_visible = 1; + + if (this_is_visible) + new_count++; + } + + if (new_count != number_of_frames_redisplayed) + windows_or_buffers_changed++; + } + /* Change frame size now if a change is pending. */ do_pending_window_change (); @@ -3670,7 +3697,7 @@ XSETFASTINT (XVECTOR (items)->contents[i + 3], hpos); if (hpos < maxendcol) - hpos = display_string (XWINDOW (FRAME_ROOT_WINDOW (f)), vpos, + hpos = display_string (w, vpos, XSTRING (string)->data, XSTRING (string)->size, hpos, 0, 0, hpos, maxendcol); @@ -4405,9 +4432,12 @@ decode_mode_spec_buf, eol_flag); if (FRAME_TERMCAP_P (f)) { - p = decode_mode_spec_coding (keyboard_coding.symbol, p, eol_flag); - p = decode_mode_spec_coding (terminal_coding.symbol, p, eol_flag); + /* No need to mention EOL here--the terminal never needs + to do EOL conversion. */ + p = decode_mode_spec_coding (keyboard_coding.symbol, p, 0); + p = decode_mode_spec_coding (terminal_coding.symbol, p, 0); } +#if 0 /* This proves to be annoying; I think we can do without. -- rms. */ #ifdef subprocesses obj = Fget_buffer_process (Fcurrent_buffer ()); if (PROCESSP (obj)) @@ -4418,6 +4448,7 @@ p, eol_flag); } #endif /* subprocesses */ +#endif /* 0 */ *p = 0; return decode_mode_spec_buf; }