aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/w32term.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/w32term.c b/src/w32term.c
index ac4e998fed9..13da811c819 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -540,6 +540,9 @@ x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p)
540 output_cursor.x, output_cursor.y); 540 output_cursor.x, output_cursor.y);
541 541
542 x_draw_vertical_border (w); 542 x_draw_vertical_border (w);
543
544 draw_window_fringes (w);
545
543 UNBLOCK_INPUT; 546 UNBLOCK_INPUT;
544 } 547 }
545 548
@@ -624,11 +627,7 @@ x_after_update_window_line (desired_row)
624 xassert (w); 627 xassert (w);
625 628
626 if (!desired_row->mode_line_p && !w->pseudo_window_p) 629 if (!desired_row->mode_line_p && !w->pseudo_window_p)
627 { 630 desired_row->redraw_fringe_bitmaps_p = 1;
628 BLOCK_INPUT;
629 draw_row_fringe_bitmaps (w, desired_row);
630 UNBLOCK_INPUT;
631 }
632 631
633 /* When a window has disappeared, make sure that no rest of 632 /* When a window has disappeared, make sure that no rest of
634 full-width rows stays visible in the internal border. Could 633 full-width rows stays visible in the internal border. Could
@@ -678,11 +677,26 @@ w32_draw_fringe_bitmap (w, row, p)
678 struct frame *f = XFRAME (WINDOW_FRAME (w)); 677 struct frame *f = XFRAME (WINDOW_FRAME (w));
679 HDC hdc; 678 HDC hdc;
680 struct face *face = p->face; 679 struct face *face = p->face;
680 int rowY;
681 681
682 hdc = get_frame_dc (f); 682 hdc = get_frame_dc (f);
683 683
684 /* Must clip because of partially visible lines. */ 684 /* Must clip because of partially visible lines. */
685 w32_clip_to_row (w, row, hdc); 685 rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
686 if (p->y < rowY)
687 {
688 /* Adjust position of "bottom aligned" bitmap on partially
689 visible last row. */
690 int oldY = row->y;
691 int oldVH = row->visible_height;
692 row->visible_height = p->h;
693 row->y -= rowY - p->y;
694 w32_clip_to_row (w, row, hdc);
695 row->y = oldY;
696 row->visible_height = oldVH;
697 }
698 else
699 w32_clip_to_row (w, row, hdc);
686 700
687 if (p->bx >= 0) 701 if (p->bx >= 0)
688 { 702 {
@@ -5121,6 +5135,14 @@ w32_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, act
5121 PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0); 5135 PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0);
5122 } 5136 }
5123 5137
5138 if (glyph_row->exact_window_width_line_p
5139 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA])
5140 {
5141 glyph_row->cursor_in_fringe_p = 1;
5142 draw_fringe_bitmap (w, glyph_row, 0);
5143 return;
5144 }
5145
5124 switch (cursor_type) 5146 switch (cursor_type)
5125 { 5147 {
5126 case HOLLOW_BOX_CURSOR: 5148 case HOLLOW_BOX_CURSOR: