diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkcellrenderertext.c | 10 | ||||
-rw-r--r-- | gtk/gtkcellrenderertoggle.c | 4 | ||||
-rw-r--r-- | gtk/gtkstyle.c | 13 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 7 |
4 files changed, 26 insertions, 8 deletions
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index f1f7896791..92448abc3f 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -1371,6 +1371,7 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, gtk_cell_renderer_text_get_size (cell, widget, cell_area, &x_offset, &y_offset, NULL, NULL); + if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED) { if (GTK_WIDGET_HAS_FOCUS (widget)) @@ -1398,7 +1399,9 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, gc = gdk_gc_new (window); gdk_gc_set_rgb_fg_color (gc, &color); - + + if (expose_area) + gdk_gc_set_clip_rectangle (gc, expose_area); gdk_draw_rectangle (window, gc, TRUE, @@ -1406,7 +1409,8 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, background_area->y, background_area->width, background_area->height); - + if (expose_area) + gdk_gc_set_clip_rectangle (gc, NULL); g_object_unref (gc); } @@ -1414,7 +1418,7 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, window, state, TRUE, - cell_area, + expose_area, widget, "cellrenderertext", cell_area->x + x_offset + cell->xpad, diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c index 4db089e992..efce7708be 100644 --- a/gtk/gtkcellrenderertoggle.c +++ b/gtk/gtkcellrenderertoggle.c @@ -359,7 +359,7 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell, gtk_paint_option (widget->style, window, state, shadow, - cell_area, widget, "cellradio", + expose_area, widget, "cellradio", cell_area->x + x_offset + cell->xpad, cell_area->y + y_offset + cell->ypad, width - 1, height - 1); @@ -369,7 +369,7 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell, gtk_paint_check (widget->style, window, state, shadow, - cell_area, widget, "cellcheck", + expose_area, widget, "cellcheck", cell_area->x + x_offset + cell->xpad, cell_area->y + y_offset + cell->ypad, width - 1, height - 1); diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c index 1e70a4e4da..0bdb73ed64 100644 --- a/gtk/gtkstyle.c +++ b/gtk/gtkstyle.c @@ -3681,16 +3681,25 @@ gtk_default_draw_check (GtkStyle *style, { if (detail && strcmp (detail, "cellcheck") == 0) { + if (area) + gdk_gc_set_clip_rectangle (widget->style->base_gc[state_type], area); gdk_draw_rectangle (window, widget->style->base_gc[state_type], TRUE, x, y, width, height); + if (area) + { + gdk_gc_set_clip_rectangle (widget->style->base_gc[state_type], NULL); + gdk_gc_set_clip_rectangle (widget->style->text_gc[state_type], area); + } gdk_draw_rectangle (window, widget->style->text_gc[state_type], FALSE, x, y, width, height); + if (area) + gdk_gc_set_clip_rectangle (widget->style->text_gc[state_type], NULL); x -= (1 + INDICATOR_PART_SIZE - width) / 2; y -= (((1 + INDICATOR_PART_SIZE - height) / 2) - 1); @@ -3773,6 +3782,8 @@ gtk_default_draw_option (GtkStyle *style, { if (detail && strcmp (detail, "cellradio") == 0) { + if (area) + gdk_gc_set_clip_rectangle (widget->style->fg_gc[state_type], area); gdk_draw_arc (window, widget->style->fg_gc[state_type], FALSE, @@ -3797,6 +3808,8 @@ gtk_default_draw_option (GtkStyle *style, draw_part (window, widget->style->fg_gc[state_type], area, x, y, CHECK_INCONSISTENT_TEXT); } + if (area) + gdk_gc_set_clip_rectangle (widget->style->fg_gc[state_type], NULL); } else { diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index 222c6a46bd..838010484a 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -2621,6 +2621,7 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column, GList *list; GdkRectangle real_cell_area; GdkRectangle real_background_area; + GdkRectangle real_expose_area = *cell_area; gint expand_cell_count = 0; gint full_requested_width = 0; gint extra_space; @@ -2737,7 +2738,7 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column, tree_column->tree_view, &rtl_background_area, &rtl_cell_area, - expose_area, + &real_expose_area, flags); } @@ -2892,7 +2893,7 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column, tree_column->tree_view, &rtl_background_area, &rtl_cell_area, - expose_area, + &real_expose_area, flags); } /* FOCUS */ @@ -3350,7 +3351,7 @@ _gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn *tree_column, gtk_paint_focus (tree_column->tree_view->style, window, cell_state, - NULL, + cell_area, tree_column->tree_view, "treeview", focus_rectangle.x, |