summaryrefslogtreecommitdiff
path: root/src/w32term.c
diff options
context:
space:
mode:
authorKim F. Storm <storm@cua.dk>2004-01-16 18:46:47 +0000
committerKim F. Storm <storm@cua.dk>2004-01-16 18:46:47 +0000
commit5fbcdd1927bb028befcb6a8ad25abb598bb9a2b3 (patch)
treef1f8ef23d0f230eb50995ca8d8b00143635e5d95 /src/w32term.c
parent797dc7b8e2a30e7d0fbb967cbbe17d27daa74fcd (diff)
downloademacs-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.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)
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: