From: Kim F. Storm Date: Sun, 8 Feb 2004 23:20:10 +0000 (+0000) Subject: (x_draw_fringe_bitmap): Copy unadapted code from X-Git-Tag: ttn-vms-21-2-B4~7681 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=288670f579e5caad6d49fcaec76f97da90adf4f4;p=emacs.git (x_draw_fringe_bitmap): Copy unadapted code from xterm.c to handle overlayed fringe bitmaps and to use cursor color for displaying cursor in fringe. (x_redisplay_interface): Add null handlers for define_fringe_bitmap and destroy_fringe_bitmap functions. --- diff --git a/src/macterm.c b/src/macterm.c index 5446fd5efad..b9e76d47d16 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -1313,7 +1313,7 @@ x_draw_fringe_bitmap (w, row, p) else x_clip_to_row (w, row, gc); - if (p->bx >= 0) + if (p->bx >= 0 && !p->overlay_p) { XGCValues gcv; gcv.foreground = face->background; @@ -1339,18 +1339,45 @@ x_draw_fringe_bitmap (w, row, p) #endif } - if (p->which != NO_FRINGE_BITMAP) + if (p->which) { - unsigned char *bits = fringe_bitmaps[p->which].bits + p->dh; + unsigned char *bits = p->bits + p->dh; BitMap bitmap; mac_create_bitmap_from_bitmap_data (&bitmap, bits, p->wd, p->h); gcv.foreground = face->foreground; gcv.background = face->background; - mac_draw_bitmap (display, window, &gcv, p->x, p->y, &bitmap); +#if 0 /* TODO: fringe overlay_p and cursor_p */ + gcv.foreground = (p->cursor_p + ? (p->overlay_p ? face->background + : f->output_data.mac->cursor_pixel) + : face->foreground)); + + if (p->overlay_p) + { + clipmask = XCreatePixmapFromBitmapData (display, + FRAME_X_DISPLAY_INFO (f)->root_window, + bits, p->wd, p->h, + 1, 0, 1); + gcv.clip_mask = clipmask; + gcv.clip_x_origin = p->x; + gcv.clip_y_origin = p->y; + XChangeGC (display, gc, GCClipMask | GCClipXOrigin | GCClipYOrigin, &gcv); + } +#endif + mac_draw_bitmap (display, window, &gcv, p->x, p->y, &bitmap); mac_free_bitmap (&bitmap); + +#if 0 /* TODO: fringe overlay_p and cursor_p */ + if (p->overlay_p) + { + gcv.clip_mask = (Pixmap) 0; + XChangeGC (display, gc, GCClipMask, &gcv); + XFreePixmap (display, clipmask); + } +#endif } mac_reset_clipping (display, window); @@ -8517,6 +8544,8 @@ static struct redisplay_interface x_redisplay_interface = x_get_glyph_overhangs, x_fix_overlapping_area, x_draw_fringe_bitmap, + 0, /* define_fringe_bitmap */ + 0, /* destroy_fringe_bitmap */ mac_per_char_metric, mac_encode_char, NULL, /* mac_compute_glyph_string_overhangs */