diff options
| author | Kim F. Storm | 2004-01-16 18:47:40 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2004-01-16 18:47:40 +0000 |
| commit | 3c0882ae5c592d8466d8bdcc02f2cd143be60e4b (patch) | |
| tree | 0dc3c9e88d627b8345bb2eb44a54a3416cc3dacc | |
| parent | 88e6b646f55d848aca98e295cde3dcfb4b9f5101 (diff) | |
| download | emacs-3c0882ae5c592d8466d8bdcc02f2cd143be60e4b.tar.gz emacs-3c0882ae5c592d8466d8bdcc02f2cd143be60e4b.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.
(x_draw_fringe_bitmap): Handle bottom aligned bitmaps.
(x_draw_window_cursor): Draw cursor in fringe.
| -rw-r--r-- | src/xterm.c | 33 |
1 files changed, 27 insertions, 6 deletions
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) | |||
| 570 | output_cursor.x, output_cursor.y); | 570 | output_cursor.x, output_cursor.y); |
| 571 | 571 | ||
| 572 | x_draw_vertical_border (w); | 572 | x_draw_vertical_border (w); |
| 573 | |||
| 574 | draw_window_fringes (w); | ||
| 575 | |||
| 573 | UNBLOCK_INPUT; | 576 | UNBLOCK_INPUT; |
| 574 | } | 577 | } |
| 575 | 578 | ||
| @@ -649,11 +652,7 @@ x_after_update_window_line (desired_row) | |||
| 649 | xassert (w); | 652 | xassert (w); |
| 650 | 653 | ||
| 651 | if (!desired_row->mode_line_p && !w->pseudo_window_p) | 654 | if (!desired_row->mode_line_p && !w->pseudo_window_p) |
| 652 | { | 655 | desired_row->redraw_fringe_bitmaps_p = 1; |
| 653 | BLOCK_INPUT; | ||
| 654 | draw_row_fringe_bitmaps (w, desired_row); | ||
| 655 | UNBLOCK_INPUT; | ||
| 656 | } | ||
| 657 | 656 | ||
| 658 | /* When a window has disappeared, make sure that no rest of | 657 | /* When a window has disappeared, make sure that no rest of |
| 659 | full-width rows stays visible in the internal border. Could | 658 | full-width rows stays visible in the internal border. Could |
| @@ -697,9 +696,24 @@ x_draw_fringe_bitmap (w, row, p) | |||
| 697 | Window window = FRAME_X_WINDOW (f); | 696 | Window window = FRAME_X_WINDOW (f); |
| 698 | GC gc = f->output_data.x->normal_gc; | 697 | GC gc = f->output_data.x->normal_gc; |
| 699 | struct face *face = p->face; | 698 | struct face *face = p->face; |
| 699 | int rowY; | ||
| 700 | 700 | ||
| 701 | /* Must clip because of partially visible lines. */ | 701 | /* Must clip because of partially visible lines. */ |
| 702 | x_clip_to_row (w, row, gc); | 702 | rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); |
| 703 | if (p->y < rowY) | ||
| 704 | { | ||
| 705 | /* Adjust position of "bottom aligned" bitmap on partially | ||
| 706 | visible last row. */ | ||
| 707 | int oldY = row->y; | ||
| 708 | int oldVH = row->visible_height; | ||
| 709 | row->visible_height = p->h; | ||
| 710 | row->y -= rowY - p->y; | ||
| 711 | x_clip_to_row (w, row, gc); | ||
| 712 | row->y = oldY; | ||
| 713 | row->visible_height = oldVH; | ||
| 714 | } | ||
| 715 | else | ||
| 716 | x_clip_to_row (w, row, gc); | ||
| 703 | 717 | ||
| 704 | if (p->bx >= 0) | 718 | if (p->bx >= 0) |
| 705 | { | 719 | { |
| @@ -7448,6 +7462,13 @@ x_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, activ | |||
| 7448 | w->phys_cursor_type = cursor_type; | 7462 | w->phys_cursor_type = cursor_type; |
| 7449 | w->phys_cursor_on_p = 1; | 7463 | w->phys_cursor_on_p = 1; |
| 7450 | 7464 | ||
| 7465 | if (glyph_row->exact_window_width_line_p | ||
| 7466 | && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) | ||
| 7467 | { | ||
| 7468 | glyph_row->cursor_in_fringe_p = 1; | ||
| 7469 | draw_fringe_bitmap (w, glyph_row, 0); | ||
| 7470 | } | ||
| 7471 | else | ||
| 7451 | switch (cursor_type) | 7472 | switch (cursor_type) |
| 7452 | { | 7473 | { |
| 7453 | case HOLLOW_BOX_CURSOR: | 7474 | case HOLLOW_BOX_CURSOR: |