comparison src/xterm.c @ 83019:82c3b4da43ca

Merged in changes from CVS HEAD Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-33 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-34 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-35 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-36 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-37 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-38 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-39 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-40 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-41 Make fringe-drawing stuff compile without a window-system * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-42 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-43 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-44 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-45 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-46 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-47 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-48 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-49 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-50 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-59
author Karoly Lorentey <lorentey@elte.hu>
date Thu, 22 Jan 2004 15:37:19 +0000
parents c4d4cbf86260 0bb1ce3944cd
children bf5b5fb49420
comparison
equal deleted inserted replaced
83018:1465425fe2d3 83019:82c3b4da43ca
569 display_and_set_cursor (w, 1, output_cursor.hpos, 569 display_and_set_cursor (w, 1, output_cursor.hpos,
570 output_cursor.vpos, 570 output_cursor.vpos,
571 output_cursor.x, output_cursor.y); 571 output_cursor.x, output_cursor.y);
572 572
573 x_draw_vertical_border (w); 573 x_draw_vertical_border (w);
574
575 draw_window_fringes (w);
576
574 UNBLOCK_INPUT; 577 UNBLOCK_INPUT;
575 } 578 }
576 579
577 /* If a row with mouse-face was overwritten, arrange for 580 /* If a row with mouse-face was overwritten, arrange for
578 XTframe_up_to_date to redisplay the mouse highlight. */ 581 XTframe_up_to_date to redisplay the mouse highlight. */
648 int width, height; 651 int width, height;
649 652
650 xassert (w); 653 xassert (w);
651 654
652 if (!desired_row->mode_line_p && !w->pseudo_window_p) 655 if (!desired_row->mode_line_p && !w->pseudo_window_p)
653 { 656 desired_row->redraw_fringe_bitmaps_p = 1;
654 BLOCK_INPUT;
655 draw_row_fringe_bitmaps (w, desired_row);
656 UNBLOCK_INPUT;
657 }
658 657
659 /* When a window has disappeared, make sure that no rest of 658 /* When a window has disappeared, make sure that no rest of
660 full-width rows stays visible in the internal border. Could 659 full-width rows stays visible in the internal border. Could
661 check here if updated_window is the leftmost/rightmost window, 660 check here if updated_window is the leftmost/rightmost window,
662 but I guess it's not worth doing since vertically split windows 661 but I guess it's not worth doing since vertically split windows
696 struct frame *f = XFRAME (WINDOW_FRAME (w)); 695 struct frame *f = XFRAME (WINDOW_FRAME (w));
697 Display *display = FRAME_X_DISPLAY (f); 696 Display *display = FRAME_X_DISPLAY (f);
698 Window window = FRAME_X_WINDOW (f); 697 Window window = FRAME_X_WINDOW (f);
699 GC gc = f->output_data.x->normal_gc; 698 GC gc = f->output_data.x->normal_gc;
700 struct face *face = p->face; 699 struct face *face = p->face;
700 int rowY;
701 701
702 /* Must clip because of partially visible lines. */ 702 /* Must clip because of partially visible lines. */
703 x_clip_to_row (w, row, gc); 703 rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
704 if (p->y < rowY)
705 {
706 /* Adjust position of "bottom aligned" bitmap on partially
707 visible last row. */
708 int oldY = row->y;
709 int oldVH = row->visible_height;
710 row->visible_height = p->h;
711 row->y -= rowY - p->y;
712 x_clip_to_row (w, row, gc);
713 row->y = oldY;
714 row->visible_height = oldVH;
715 }
716 else
717 x_clip_to_row (w, row, gc);
704 718
705 if (p->bx >= 0) 719 if (p->bx >= 0)
706 { 720 {
707 /* In case the same realized face is used for fringes and 721 /* In case the same realized face is used for fringes and
708 for something displayed in the text (e.g. face `region' on 722 for something displayed in the text (e.g. face `region' on
6312 nbytes = XLookupString (&event.xkey, copy_bufptr, 6326 nbytes = XLookupString (&event.xkey, copy_bufptr,
6313 copy_bufsiz, &keysym, 6327 copy_bufsiz, &keysym,
6314 &compose_status); 6328 &compose_status);
6315 #endif 6329 #endif
6316 6330
6331 /* If not using XIM/XIC, and a compose sequence is in progress,
6332 we break here. Otherwise, chars_matched is always 0. */
6333 if (compose_status.chars_matched > 0 && nbytes == 0)
6334 break;
6335
6317 orig_keysym = keysym; 6336 orig_keysym = keysym;
6318 6337
6319 if (numchars > 1) 6338 if (numchars > 1)
6320 { 6339 {
6321 Lisp_Object c; 6340 Lisp_Object c;
7450 if (on_p) 7469 if (on_p)
7451 { 7470 {
7452 w->phys_cursor_type = cursor_type; 7471 w->phys_cursor_type = cursor_type;
7453 w->phys_cursor_on_p = 1; 7472 w->phys_cursor_on_p = 1;
7454 7473
7474 if (glyph_row->exact_window_width_line_p
7475 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA])
7476 {
7477 glyph_row->cursor_in_fringe_p = 1;
7478 draw_fringe_bitmap (w, glyph_row, 0);
7479 }
7480 else
7455 switch (cursor_type) 7481 switch (cursor_type)
7456 { 7482 {
7457 case HOLLOW_BOX_CURSOR: 7483 case HOLLOW_BOX_CURSOR:
7458 x_draw_hollow_cursor (w, glyph_row); 7484 x_draw_hollow_cursor (w, glyph_row);
7459 break; 7485 break;