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;