diff options
| author | Jim Blandy | 1992-12-06 22:20:47 +0000 |
|---|---|---|
| committer | Jim Blandy | 1992-12-06 22:20:47 +0000 |
| commit | d724d9896dcf19b4d5ed6b38548a6ac1f870839a (patch) | |
| tree | f56a6abfc1d16b3625dd99702e506d98e1f84f0d /src | |
| parent | 016899c07c4bc7efde1c0afef53e417a9d5c0ed7 (diff) | |
| download | emacs-d724d9896dcf19b4d5ed6b38548a6ac1f870839a.tar.gz emacs-d724d9896dcf19b4d5ed6b38548a6ac1f870839a.zip | |
* 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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index feeca963016..c9cb8f01ea5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -191,6 +191,7 @@ message1 (m) | |||
| 191 | 191 | ||
| 192 | choose_minibuf_frame (); | 192 | choose_minibuf_frame (); |
| 193 | minibuf_frame = WINDOW_FRAME (XWINDOW (minibuf_window)); | 193 | minibuf_frame = WINDOW_FRAME (XWINDOW (minibuf_window)); |
| 194 | FRAME_SAMPLE_VISIBILITY (XFRAME (minibuf_frame)); | ||
| 194 | if (FRAME_VISIBLE_P (selected_frame) | 195 | if (FRAME_VISIBLE_P (selected_frame) |
| 195 | && ! FRAME_VISIBLE_P (XFRAME (minibuf_frame))) | 196 | && ! FRAME_VISIBLE_P (XFRAME (minibuf_frame))) |
| 196 | Fmake_frame_visible (WINDOW_FRAME (XWINDOW (minibuf_window))); | 197 | Fmake_frame_visible (WINDOW_FRAME (XWINDOW (minibuf_window))); |
| @@ -346,6 +347,18 @@ redisplay () | |||
| 346 | if (noninteractive) | 347 | if (noninteractive) |
| 347 | return; | 348 | return; |
| 348 | 349 | ||
| 350 | /* Set the visible flags for all frames. | ||
| 351 | Do this before checking for resized or garbaged frames; they want | ||
| 352 | to know if their frames are visible. | ||
| 353 | See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */ | ||
| 354 | { | ||
| 355 | Lisp_Object tail; | ||
| 356 | FRAME_PTR f; | ||
| 357 | |||
| 358 | FOR_EACH_FRAME (tail, f) | ||
| 359 | FRAME_SAMPLE_VISIBILITY (f); | ||
| 360 | } | ||
| 361 | |||
| 349 | /* Notice any pending interrupt request to change frame size. */ | 362 | /* Notice any pending interrupt request to change frame size. */ |
| 350 | do_pending_window_change (); | 363 | do_pending_window_change (); |
| 351 | 364 | ||
| @@ -476,28 +489,16 @@ redisplay () | |||
| 476 | 489 | ||
| 477 | if (all_windows) | 490 | if (all_windows) |
| 478 | { | 491 | { |
| 479 | #ifdef MULTI_FRAME | ||
| 480 | Lisp_Object tail; | 492 | Lisp_Object tail; |
| 493 | FRAME_PTR f; | ||
| 481 | 494 | ||
| 482 | /* Recompute # windows showing selected buffer. | 495 | /* Recompute # windows showing selected buffer. |
| 483 | This will be incremented each time such a window is displayed. */ | 496 | This will be incremented each time such a window is displayed. */ |
| 484 | buffer_shared = 0; | 497 | buffer_shared = 0; |
| 485 | 498 | ||
| 486 | for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr) | 499 | FOR_EACH_FRAME (tail, f) |
| 487 | { | 500 | if (FRAME_VISIBLE_P (f)) |
| 488 | FRAME_PTR f; | 501 | redisplay_windows (FRAME_ROOT_WINDOW (f)); |
| 489 | |||
| 490 | if (XTYPE (XCONS (tail)->car) != Lisp_Frame) | ||
| 491 | continue; | ||
| 492 | |||
| 493 | f = XFRAME (XCONS (tail)->car); | ||
| 494 | if (f->visible) | ||
| 495 | /* Redraw its windows. */ | ||
| 496 | redisplay_windows (FRAME_ROOT_WINDOW (f)); | ||
| 497 | } | ||
| 498 | #else | ||
| 499 | redisplay_windows (FRAME_ROOT_WINDOW (f)); | ||
| 500 | #endif /* not MULTI_FRAME */ | ||
| 501 | } | 502 | } |
| 502 | else if (FRAME_VISIBLE_P (selected_frame)) | 503 | else if (FRAME_VISIBLE_P (selected_frame)) |
| 503 | { | 504 | { |
| @@ -542,7 +543,7 @@ update: | |||
| 542 | { | 543 | { |
| 543 | if (FRAME_VISIBLE_P (selected_frame)) | 544 | if (FRAME_VISIBLE_P (selected_frame)) |
| 544 | pause = update_frame (selected_frame, 0, 0); | 545 | pause = update_frame (selected_frame, 0, 0); |
| 545 | #ifdef MULTI_FRAME | 546 | |
| 546 | /* We may have called echo_area_display at the top of this | 547 | /* We may have called echo_area_display at the top of this |
| 547 | function. If the echo area is on another frame, that may | 548 | function. If the echo area is on another frame, that may |
| 548 | have put text on a frame other than the selected one, so the | 549 | have put text on a frame other than the selected one, so the |
| @@ -555,7 +556,6 @@ update: | |||
| 555 | if (mini_frame != selected_frame) | 556 | if (mini_frame != selected_frame) |
| 556 | pause |= update_frame (mini_frame, 0, 0); | 557 | pause |= update_frame (mini_frame, 0, 0); |
| 557 | } | 558 | } |
| 558 | #endif | ||
| 559 | } | 559 | } |
| 560 | 560 | ||
| 561 | /* If frame does not match, prevent doing single-line-update next time. | 561 | /* If frame does not match, prevent doing single-line-update next time. |