Mercurial > emacs
comparison src/xterm.c @ 53609:0bb1ce3944cd
(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.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 16 Jan 2004 18:47:40 +0000 |
parents | e3e8f1dcc895 |
children | 1470a74d1913 82c3b4da43ca |
comparison
equal
deleted
inserted
replaced
53608:81b31a8c3313 | 53609:0bb1ce3944cd |
---|---|
568 display_and_set_cursor (w, 1, output_cursor.hpos, | 568 display_and_set_cursor (w, 1, output_cursor.hpos, |
569 output_cursor.vpos, | 569 output_cursor.vpos, |
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 |
576 /* If a row with mouse-face was overwritten, arrange for | 579 /* If a row with mouse-face was overwritten, arrange for |
577 XTframe_up_to_date to redisplay the mouse highlight. */ | 580 XTframe_up_to_date to redisplay the mouse highlight. */ |
647 int width, height; | 650 int width, height; |
648 | 651 |
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 |
660 check here if updated_window is the leftmost/rightmost window, | 659 check here if updated_window is the leftmost/rightmost window, |
661 but I guess it's not worth doing since vertically split windows | 660 but I guess it's not worth doing since vertically split windows |
695 struct frame *f = XFRAME (WINDOW_FRAME (w)); | 694 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
696 Display *display = FRAME_X_DISPLAY (f); | 695 Display *display = FRAME_X_DISPLAY (f); |
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 { |
706 /* In case the same realized face is used for fringes and | 720 /* In case the same realized face is used for fringes and |
707 for something displayed in the text (e.g. face `region' on | 721 for something displayed in the text (e.g. face `region' on |
7446 if (on_p) | 7460 if (on_p) |
7447 { | 7461 { |
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: |
7454 x_draw_hollow_cursor (w, glyph_row); | 7475 x_draw_hollow_cursor (w, glyph_row); |
7455 break; | 7476 break; |