diff options
author | Kim F. Storm <storm@cua.dk> | 2004-01-16 18:46:47 +0000 |
---|---|---|
committer | Kim F. Storm <storm@cua.dk> | 2004-01-16 18:46:47 +0000 |
commit | 5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3 (patch) | |
tree | f1f8ef23d0f230eb50995ca8d8b00143635e5d95 /src/w32term.c | |
parent | 797dc7b8e2a30e7d0fbb967cbbe17d27daa74fcd (diff) | |
download | emacs-5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3.tar.gz |
(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/w32term.c')
-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) output_cursor.x, output_cursor.y); x_draw_vertical_border (w); + + draw_window_fringes (w); + UNBLOCK_INPUT; } @@ -624,11 +627,7 @@ x_after_update_window_line (desired_row) xassert (w); if (!desired_row->mode_line_p && !w->pseudo_window_p) - { - BLOCK_INPUT; - draw_row_fringe_bitmaps (w, desired_row); - UNBLOCK_INPUT; - } + desired_row->redraw_fringe_bitmaps_p = 1; /* When a window has disappeared, make sure that no rest of full-width rows stays visible in the internal border. Could @@ -678,11 +677,26 @@ w32_draw_fringe_bitmap (w, row, p) struct frame *f = XFRAME (WINDOW_FRAME (w)); HDC hdc; struct face *face = p->face; + int rowY; hdc = get_frame_dc (f); /* Must clip because of partially visible lines. */ - w32_clip_to_row (w, row, hdc); + rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); + if (p->y < rowY) + { + /* Adjust position of "bottom aligned" bitmap on partially + visible last row. */ + int oldY = row->y; + int oldVH = row->visible_height; + row->visible_height = p->h; + row->y -= rowY - p->y; + w32_clip_to_row (w, row, hdc); + row->y = oldY; + row->visible_height = oldVH; + } + else + w32_clip_to_row (w, row, hdc); if (p->bx >= 0) { @@ -5121,6 +5135,14 @@ w32_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, act PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0); } + if (glyph_row->exact_window_width_line_p + && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) + { + glyph_row->cursor_in_fringe_p = 1; + draw_fringe_bitmap (w, glyph_row, 0); + return; + } + switch (cursor_type) { case HOLLOW_BOX_CURSOR: |