diff options
| author | Kim F. Storm | 2004-01-16 18:46:47 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2004-01-16 18:46:47 +0000 |
| commit | 5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3 (patch) | |
| tree | f1f8ef23d0f230eb50995ca8d8b00143635e5d95 /src | |
| parent | 797dc7b8e2a30e7d0fbb967cbbe17d27daa74fcd (diff) | |
| download | emacs-5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3.tar.gz emacs-5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3.zip | |
(x_update_window_end): Call draw_window_fringes.
(x_after_update_window_line): Just set redraw_fringe_bitmaps_p
in row instead of actually drawing fringe bitmaps.
(w32_draw_fringe_bitmap): Handle bottom aligned bitmaps.
(w32_draw_window_cursor): Draw cursor in fringe.
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32term.c | 34 |
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: |