comparison src/redisplay-x.c @ 269:b2472a1930f2 r20-5b33

Import from CVS: tag r20-5b33
author cvs
date Mon, 13 Aug 2007 10:27:19 +0200
parents 11cf20601dec
children c5d627a313b1
comparison
equal deleted inserted replaced
268:6ced69ccd85f 269:b2472a1930f2
84 static void x_redraw_exposed_windows (Lisp_Object window, int x, int y, 84 static void x_redraw_exposed_windows (Lisp_Object window, int x, int y,
85 int width, int height); 85 int width, int height);
86 static void x_clear_region (Lisp_Object window, face_index findex, int x, 86 static void x_clear_region (Lisp_Object window, face_index findex, int x,
87 int y, int width, int height); 87 int y, int width, int height);
88 static void x_output_eol_cursor (struct window *w, struct display_line *dl, 88 static void x_output_eol_cursor (struct window *w, struct display_line *dl,
89 int xpos); 89 int xpos, face_index findex);
90 static void x_clear_frame (struct frame *f); 90 static void x_clear_frame (struct frame *f);
91 static void x_clear_frame_windows (Lisp_Object window); 91 static void x_clear_frame_windows (Lisp_Object window);
92 static void x_bevel_modeline (struct window *w, struct display_line *dl); 92 static void x_bevel_modeline (struct window *w, struct display_line *dl);
93 93
94 94
416 416
417 if (rb->cursor_type == CURSOR_ON) 417 if (rb->cursor_type == CURSOR_ON)
418 { 418 {
419 if (rb->object.chr.ch == '\n') 419 if (rb->object.chr.ch == '\n')
420 { 420 {
421 x_output_eol_cursor (w, dl, xpos); 421 x_output_eol_cursor (w, dl, xpos, findex);
422 } 422 }
423 else 423 else
424 { 424 {
425 Dynarr_add (buf, rb->object.chr.ch); 425 Dynarr_add (buf, rb->object.chr.ch);
426 x_output_string (w, dl, buf, xpos, 0, start_pixpos, 426 x_output_string (w, dl, buf, xpos, 0, start_pixpos,
2057 2057
2058 Draw a cursor at the end of a line. The end-of-line cursor is 2058 Draw a cursor at the end of a line. The end-of-line cursor is
2059 narrower than the normal cursor. 2059 narrower than the normal cursor.
2060 ****************************************************************************/ 2060 ****************************************************************************/
2061 static void 2061 static void
2062 x_output_eol_cursor (struct window *w, struct display_line *dl, int xpos) 2062 x_output_eol_cursor (struct window *w, struct display_line *dl, int xpos,
2063 face_index findex)
2063 { 2064 {
2064 struct frame *f = XFRAME (w->frame); 2065 struct frame *f = XFRAME (w->frame);
2065 struct device *d = XDEVICE (f->device); 2066 struct device *d = XDEVICE (f->device);
2067 Lisp_Object window;
2066 2068
2067 Display *dpy = DEVICE_X_DISPLAY (d); 2069 Display *dpy = DEVICE_X_DISPLAY (d);
2068 Window x_win = XtWindow (FRAME_X_TEXT_WIDGET (f)); 2070 Window x_win = XtWindow (FRAME_X_TEXT_WIDGET (f));
2069 GC gc; 2071 GC gc;
2070 face_index elt = get_builtin_face_cache_index (w, Vtext_cursor_face); 2072 face_index elt = get_builtin_face_cache_index (w, Vtext_cursor_face);
2079 int width = EOL_CURSOR_WIDTH; 2081 int width = EOL_CURSOR_WIDTH;
2080 int height = dl->ascent + dl->descent - dl->clip; 2082 int height = dl->ascent + dl->descent - dl->clip;
2081 int cursor_height, cursor_y; 2083 int cursor_height, cursor_y;
2082 int defheight, defascent; 2084 int defheight, defascent;
2083 2085
2084 XClearArea (dpy, x_win, x, y, width, height, False); 2086 XSETWINDOW (window, w);
2087 x_clear_region (window, findex, x, y, width, height);
2085 2088
2086 if (NILP (w->text_cursor_visible_p)) 2089 if (NILP (w->text_cursor_visible_p))
2087 return; 2090 return;
2088 2091
2089 gc = x_get_gc (d, Qnil, cursor_cachel->background, Qnil, Qnil, Qnil); 2092 gc = x_get_gc (d, Qnil, cursor_cachel->background, Qnil, Qnil, Qnil);