comparison src/w32term.c @ 53607:4262a032b45b

(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.
author Kim F. Storm <storm@cua.dk>
date Fri, 16 Jan 2004 18:46:47 +0000
parents 112be2022ce0
children e1b1c388f74d 82c3b4da43ca
comparison
equal deleted inserted replaced
53606:96c29ac603e8 53607:4262a032b45b
538 display_and_set_cursor (w, 1, output_cursor.hpos, 538 display_and_set_cursor (w, 1, output_cursor.hpos,
539 output_cursor.vpos, 539 output_cursor.vpos,
540 output_cursor.x, output_cursor.y); 540 output_cursor.x, output_cursor.y);
541 541
542 x_draw_vertical_border (w); 542 x_draw_vertical_border (w);
543
544 draw_window_fringes (w);
545
543 UNBLOCK_INPUT; 546 UNBLOCK_INPUT;
544 } 547 }
545 548
546 /* If a row with mouse-face was overwritten, arrange for 549 /* If a row with mouse-face was overwritten, arrange for
547 XTframe_up_to_date to redisplay the mouse highlight. */ 550 XTframe_up_to_date to redisplay the mouse highlight. */
622 int width, height; 625 int width, height;
623 626
624 xassert (w); 627 xassert (w);
625 628
626 if (!desired_row->mode_line_p && !w->pseudo_window_p) 629 if (!desired_row->mode_line_p && !w->pseudo_window_p)
627 { 630 desired_row->redraw_fringe_bitmaps_p = 1;
628 BLOCK_INPUT;
629 draw_row_fringe_bitmaps (w, desired_row);
630 UNBLOCK_INPUT;
631 }
632 631
633 /* When a window has disappeared, make sure that no rest of 632 /* When a window has disappeared, make sure that no rest of
634 full-width rows stays visible in the internal border. Could 633 full-width rows stays visible in the internal border. Could
635 check here if updated_window is the leftmost/rightmost window, 634 check here if updated_window is the leftmost/rightmost window,
636 but I guess it's not worth doing since vertically split windows 635 but I guess it's not worth doing since vertically split windows
676 struct draw_fringe_bitmap_params *p; 675 struct draw_fringe_bitmap_params *p;
677 { 676 {
678 struct frame *f = XFRAME (WINDOW_FRAME (w)); 677 struct frame *f = XFRAME (WINDOW_FRAME (w));
679 HDC hdc; 678 HDC hdc;
680 struct face *face = p->face; 679 struct face *face = p->face;
680 int rowY;
681 681
682 hdc = get_frame_dc (f); 682 hdc = get_frame_dc (f);
683 683
684 /* Must clip because of partially visible lines. */ 684 /* Must clip because of partially visible lines. */
685 w32_clip_to_row (w, row, hdc); 685 rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
686 if (p->y < rowY)
687 {
688 /* Adjust position of "bottom aligned" bitmap on partially
689 visible last row. */
690 int oldY = row->y;
691 int oldVH = row->visible_height;
692 row->visible_height = p->h;
693 row->y -= rowY - p->y;
694 w32_clip_to_row (w, row, hdc);
695 row->y = oldY;
696 row->visible_height = oldVH;
697 }
698 else
699 w32_clip_to_row (w, row, hdc);
686 700
687 if (p->bx >= 0) 701 if (p->bx >= 0)
688 { 702 {
689 w32_fill_area (f, hdc, face->background, 703 w32_fill_area (f, hdc, face->background,
690 p->bx, p->by, p->nx, p->ny); 704 p->bx, p->by, p->nx, p->ny);
5119 5133
5120 /* Move the system caret. */ 5134 /* Move the system caret. */
5121 PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0); 5135 PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0);
5122 } 5136 }
5123 5137
5138 if (glyph_row->exact_window_width_line_p
5139 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA])
5140 {
5141 glyph_row->cursor_in_fringe_p = 1;
5142 draw_fringe_bitmap (w, glyph_row, 0);
5143 return;
5144 }
5145
5124 switch (cursor_type) 5146 switch (cursor_type)
5125 { 5147 {
5126 case HOLLOW_BOX_CURSOR: 5148 case HOLLOW_BOX_CURSOR:
5127 x_draw_hollow_cursor (w, glyph_row); 5149 x_draw_hollow_cursor (w, glyph_row);
5128 break; 5150 break;