# HG changeset patch # User nadvornik # Date 1214165252 0 # Node ID b54e3fc9cafbb6dc60d489a05d77abb122a2a6ea # Parent 8308d3606991eb67de903473d375123119a0bbf4 optimized marks drawing diff -r 8308d3606991 -r b54e3fc9cafb src/cellrenderericon.c --- a/src/cellrenderericon.c Sun Jun 22 20:01:20 2008 +0000 +++ b/src/cellrenderericon.c Sun Jun 22 20:07:32 2008 +0000 @@ -702,14 +702,18 @@ pix_rect.x = cell_area->x + cell->xpad + (cell_rect.width - pix_rect.width + 1) / 2 + (TOGGLE_SPACING - TOGGLE_WIDTH) / 2; pix_rect.y = cell_area->y + cell->ypad + (cell_rect.height - pix_rect.height) + (TOGGLE_SPACING - TOGGLE_WIDTH) / 2; - for (i = 0; i < cellicon->num_marks; i++) + if (gdk_rectangle_intersect(cell_area, &pix_rect, &draw_rect) && + gdk_rectangle_intersect(expose_area, &draw_rect, &draw_rect)) { - gtk_paint_check (widget->style, window, - state, (cellicon->marks & (1 << i)) ? GTK_SHADOW_IN : GTK_SHADOW_OUT, - cell_area, widget, "cellcheck", - pix_rect.x + i * TOGGLE_SPACING + (TOGGLE_WIDTH - TOGGLE_SPACING) / 2, - pix_rect.y, - TOGGLE_WIDTH, TOGGLE_WIDTH); + for (i = 0; i < cellicon->num_marks; i++) + { + gtk_paint_check (widget->style, window, + state, (cellicon->marks & (1 << i)) ? GTK_SHADOW_IN : GTK_SHADOW_OUT, + cell_area, widget, "cellcheck", + pix_rect.x + i * TOGGLE_SPACING + (TOGGLE_WIDTH - TOGGLE_SPACING) / 2, + pix_rect.y, + TOGGLE_WIDTH, TOGGLE_WIDTH); + } } }