diff options
| author | Richard M. Stallman | 1997-07-07 02:39:39 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1997-07-07 02:39:39 +0000 |
| commit | 11c52c4f41bc4a4fb31a1cd79274ff11c3fd8e7a (patch) | |
| tree | 8f394dbfdf0ed172b84e1a747d5bbcc8975ab27d /src | |
| parent | beacaab334c21bbf0e15ccd8af4e870414c88ee5 (diff) | |
| download | emacs-11c52c4f41bc4a4fb31a1cd79274ff11c3fd8e7a.tar.gz emacs-11c52c4f41bc4a4fb31a1cd79274ff11c3fd8e7a.zip | |
(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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 5b51a25475f..221d603a7a3 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -864,6 +864,7 @@ redisplay_internal (preserve_echo_area) | |||
| 864 | int all_windows; | 864 | int all_windows; |
| 865 | register int tlbufpos, tlendpos; | 865 | register int tlbufpos, tlendpos; |
| 866 | struct position pos; | 866 | struct position pos; |
| 867 | int number_of_frames_redisplayed; | ||
| 867 | 868 | ||
| 868 | if (noninteractive) | 869 | if (noninteractive) |
| 869 | return; | 870 | return; |
| @@ -888,12 +889,14 @@ redisplay_internal (preserve_echo_area) | |||
| 888 | Do this before checking for resized or garbaged frames; they want | 889 | Do this before checking for resized or garbaged frames; they want |
| 889 | to know if their frames are visible. | 890 | to know if their frames are visible. |
| 890 | See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */ | 891 | See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */ |
| 892 | number_of_frames_redisplayed = 0; | ||
| 891 | { | 893 | { |
| 892 | Lisp_Object tail, frame; | 894 | Lisp_Object tail, frame; |
| 893 | 895 | ||
| 894 | FOR_EACH_FRAME (tail, frame) | 896 | FOR_EACH_FRAME (tail, frame) |
| 895 | { | 897 | { |
| 896 | FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); | 898 | FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); |
| 899 | number_of_frames_redisplayed++; | ||
| 897 | 900 | ||
| 898 | /* Clear out all the display lines in which we will generate the | 901 | /* Clear out all the display lines in which we will generate the |
| 899 | glyphs to display. */ | 902 | glyphs to display. */ |
| @@ -1304,6 +1307,30 @@ update: | |||
| 1304 | request_sigio (); | 1307 | request_sigio (); |
| 1305 | start_polling (); | 1308 | start_polling (); |
| 1306 | 1309 | ||
| 1310 | /* If something has become visible now which was not before, | ||
| 1311 | redisplay again, so that we get them. */ | ||
| 1312 | if (!pause) | ||
| 1313 | { | ||
| 1314 | Lisp_Object tail, frame; | ||
| 1315 | int new_count = 0; | ||
| 1316 | |||
| 1317 | FOR_EACH_FRAME (tail, frame) | ||
| 1318 | { | ||
| 1319 | int this_is_visible = 0; | ||
| 1320 | if (XFRAME (frame)->visible) | ||
| 1321 | this_is_visible = 1; | ||
| 1322 | FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); | ||
| 1323 | if (XFRAME (frame)->visible) | ||
| 1324 | this_is_visible = 1; | ||
| 1325 | |||
| 1326 | if (this_is_visible) | ||
| 1327 | new_count++; | ||
| 1328 | } | ||
| 1329 | |||
| 1330 | if (new_count != number_of_frames_redisplayed) | ||
| 1331 | windows_or_buffers_changed++; | ||
| 1332 | } | ||
| 1333 | |||
| 1307 | /* Change frame size now if a change is pending. */ | 1334 | /* Change frame size now if a change is pending. */ |
| 1308 | do_pending_window_change (); | 1335 | do_pending_window_change (); |
| 1309 | 1336 | ||
| @@ -3670,7 +3697,7 @@ display_menu_bar (w) | |||
| 3670 | XSETFASTINT (XVECTOR (items)->contents[i + 3], hpos); | 3697 | XSETFASTINT (XVECTOR (items)->contents[i + 3], hpos); |
| 3671 | 3698 | ||
| 3672 | if (hpos < maxendcol) | 3699 | if (hpos < maxendcol) |
| 3673 | hpos = display_string (XWINDOW (FRAME_ROOT_WINDOW (f)), vpos, | 3700 | hpos = display_string (w, vpos, |
| 3674 | XSTRING (string)->data, | 3701 | XSTRING (string)->data, |
| 3675 | XSTRING (string)->size, | 3702 | XSTRING (string)->size, |
| 3676 | hpos, 0, 0, hpos, maxendcol); | 3703 | hpos, 0, 0, hpos, maxendcol); |
| @@ -4405,9 +4432,12 @@ decode_mode_spec (w, c, spec_width, maxwidth) | |||
| 4405 | decode_mode_spec_buf, eol_flag); | 4432 | decode_mode_spec_buf, eol_flag); |
| 4406 | if (FRAME_TERMCAP_P (f)) | 4433 | if (FRAME_TERMCAP_P (f)) |
| 4407 | { | 4434 | { |
| 4408 | p = decode_mode_spec_coding (keyboard_coding.symbol, p, eol_flag); | 4435 | /* No need to mention EOL here--the terminal never needs |
| 4409 | p = decode_mode_spec_coding (terminal_coding.symbol, p, eol_flag); | 4436 | to do EOL conversion. */ |
| 4437 | p = decode_mode_spec_coding (keyboard_coding.symbol, p, 0); | ||
| 4438 | p = decode_mode_spec_coding (terminal_coding.symbol, p, 0); | ||
| 4410 | } | 4439 | } |
| 4440 | #if 0 /* This proves to be annoying; I think we can do without. -- rms. */ | ||
| 4411 | #ifdef subprocesses | 4441 | #ifdef subprocesses |
| 4412 | obj = Fget_buffer_process (Fcurrent_buffer ()); | 4442 | obj = Fget_buffer_process (Fcurrent_buffer ()); |
| 4413 | if (PROCESSP (obj)) | 4443 | if (PROCESSP (obj)) |
| @@ -4418,6 +4448,7 @@ decode_mode_spec (w, c, spec_width, maxwidth) | |||
| 4418 | p, eol_flag); | 4448 | p, eol_flag); |
| 4419 | } | 4449 | } |
| 4420 | #endif /* subprocesses */ | 4450 | #endif /* subprocesses */ |
| 4451 | #endif /* 0 */ | ||
| 4421 | *p = 0; | 4452 | *p = 0; |
| 4422 | return decode_mode_spec_buf; | 4453 | return decode_mode_spec_buf; |
| 4423 | } | 4454 | } |