From: Kim F. Storm Date: Fri, 16 Jan 2004 18:47:40 +0000 (+0000) Subject: (x_update_window_end): Call draw_window_fringes. X-Git-Tag: ttn-vms-21-2-B4~7911 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3c0882ae5c592d8466d8bdcc02f2cd143be60e4b;p=emacs.git (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. (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. (x_draw_window_cursor): Draw cursor in fringe. --- diff --git a/src/xterm.c b/src/xterm.c index 2c6cb44d159..f9287036cc5 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -570,6 +570,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; } @@ -649,11 +652,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 @@ -697,9 +696,24 @@ x_draw_fringe_bitmap (w, row, p) Window window = FRAME_X_WINDOW (f); GC gc = f->output_data.x->normal_gc; struct face *face = p->face; + int rowY; /* Must clip because of partially visible lines. */ - x_clip_to_row (w, row, gc); + 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; + x_clip_to_row (w, row, gc); + row->y = oldY; + row->visible_height = oldVH; + } + else + x_clip_to_row (w, row, gc); if (p->bx >= 0) { @@ -7448,6 +7462,13 @@ x_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, activ w->phys_cursor_type = cursor_type; w->phys_cursor_on_p = 1; + 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); + } + else switch (cursor_type) { case HOLLOW_BOX_CURSOR: