769 |
struct glyph_row *desired_row; |
struct glyph_row *desired_row; |
770 |
{ |
{ |
771 |
struct window *w = updated_window; |
struct window *w = updated_window; |
772 |
|
struct frame *f; |
773 |
|
int width; |
774 |
|
|
775 |
xassert (w); |
xassert (w); |
776 |
|
|
777 |
if (!desired_row->mode_line_p && !w->pseudo_window_p) |
if (!desired_row->mode_line_p && !w->pseudo_window_p) |
778 |
{ |
{ |
|
struct frame *f; |
|
|
int width; |
|
|
|
|
779 |
BLOCK_INPUT; |
BLOCK_INPUT; |
780 |
x_draw_row_bitmaps (w, desired_row); |
x_draw_row_bitmaps (w, desired_row); |
781 |
|
UNBLOCK_INPUT; |
782 |
|
} |
783 |
|
|
784 |
|
/* When a window has disappeared, make sure that no rest of |
785 |
|
full-width rows stays visible in the internal border. Could |
786 |
|
check here if updated_window is the leftmost/rightmost window, |
787 |
|
but I guess it's not worth doing since vertically split windows |
788 |
|
are almost never used, internal border is rarely set, and the |
789 |
|
overhead is very small. */ |
790 |
|
if (windows_or_buffers_changed |
791 |
|
&& desired_row->full_width_p |
792 |
|
&& (f = XFRAME (w->frame), |
793 |
|
width = FRAME_INTERNAL_BORDER_WIDTH (f), |
794 |
|
width != 0)) |
795 |
|
{ |
796 |
|
int height = desired_row->visible_height; |
797 |
|
int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); |
798 |
|
|
799 |
/* When a window has disappeared, make sure that no rest of |
/* Internal border is drawn below the tool bar. */ |
800 |
full-width rows stays visible in the internal border. */ |
if (WINDOWP (f->tool_bar_window) |
801 |
if (windows_or_buffers_changed |
&& w == XWINDOW (f->tool_bar_window)) |
802 |
&& (f = XFRAME (w->frame), |
y -= width; |
|
width = FRAME_INTERNAL_BORDER_WIDTH (f), |
|
|
width != 0)) |
|
|
{ |
|
|
int height = desired_row->visible_height; |
|
|
int x = (window_box_right (w, -1) |
|
|
+ FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f)); |
|
|
int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); |
|
|
|
|
|
x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
|
x, y, width, height, False); |
|
|
} |
|
803 |
|
|
804 |
|
BLOCK_INPUT; |
805 |
|
x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
806 |
|
0, y, width, height, False); |
807 |
|
x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
808 |
|
f->output_data.x->pixel_width - width, |
809 |
|
y, width, height, False); |
810 |
UNBLOCK_INPUT; |
UNBLOCK_INPUT; |
811 |
} |
} |
812 |
} |
} |