Mercurial > hg > xemacs-beta
diff src/gutter.c @ 446:1ccc32a20af4 r21-2-38
Import from CVS: tag r21-2-38
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:37:21 +0200 |
parents | 576fb035e263 |
children | 0784d089fdc9 |
line wrap: on
line diff
--- a/src/gutter.c Mon Aug 13 11:36:20 2007 +0200 +++ b/src/gutter.c Mon Aug 13 11:37:21 2007 +0200 @@ -218,6 +218,41 @@ } } +/* + display_boxes_in_gutter_p + + Determine whether the required display_glyph_area is completely + inside the gutter. -1 means the display_box is not in the gutter. 1 + means the display_box and the display_glyph_area are in the + window. 0 means the display_box is in the gutter but the + display_glyph_area is not. */ +int display_boxes_in_gutter_p (struct frame *f, struct display_box* db, + struct display_glyph_area* dga) +{ + enum gutter_pos pos; + GUTTER_POS_LOOP (pos) + { + if (FRAME_GUTTER_VISIBLE (f, pos)) + { + int x, y, width, height; + get_gutter_coords (f, pos, &x, &y, &width, &height); + if (db->xpos + dga->xoffset >= x + && + db->ypos + dga->yoffset >= y + && + db->xpos + dga->xoffset + dga->width <= x + width + && + db->ypos + dga->yoffset + dga->height <= y + height) + return 1; + else if (db->xpos >= x && db->ypos >= y + && db->xpos + db->width <= x + width + && db->ypos + db->height <= y + height) + return 0; + } + } + return -1; +} + /* Convert the gutter specifier into something we can actually display. */ static Lisp_Object construct_window_gutter_spec (struct window* w, @@ -389,7 +424,8 @@ (f->extents_changed && w->gutter_extent_modiff[pos])) { #ifdef DEBUG_GUTTERS - printf ("gutter redisplay triggered by %s\n", force ? "force" : + printf ("gutter redisplay [%dx%d@%d+%d] triggered by %s,\n", + width, height, x, y, force ? "force" : f->faces_changed ? "f->faces_changed" : f->frame_changed ? "f->frame_changed" : f->gutter_changed ? "f->gutter_changed" :