[gtk+/rendering-cleanup-next: 48/153] iconview: Simplify rubberband drawing
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/rendering-cleanup-next: 48/153] iconview: Simplify rubberband drawing
- Date: Sat, 11 Sep 2010 04:55:28 +0000 (UTC)
commit 1672b917dd56e300f2aac1e4a66b3b87981ab390
Author: Benjamin Otte <otte redhat com>
Date: Mon Sep 6 17:46:37 2010 +0200
iconview: Simplify rubberband drawing
gtk/gtkiconview.c | 53 +++++++++++++++--------------------------------------
1 files changed, 15 insertions(+), 38 deletions(-)
---
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index dfb62c3..e203f27 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -304,8 +304,7 @@ static void gtk_icon_view_paint_item (GtkIco
gint y,
gboolean draw_focus);
static void gtk_icon_view_paint_rubberband (GtkIconView *icon_view,
- cairo_t *cr,
- GdkRectangle *area);
+ cairo_t *cr);
static void gtk_icon_view_queue_draw_path (GtkIconView *icon_view,
GtkTreePath *path);
static void gtk_icon_view_queue_draw_item (GtkIconView *icon_view,
@@ -1675,18 +1674,7 @@ gtk_icon_view_expose (GtkWidget *widget,
}
if (icon_view->priv->doing_rubberband)
- {
- cairo_rectangle_int_t rectangle;
- gint n_rectangles;
-
- n_rectangles = cairo_region_num_rectangles (expose->region);
-
- while (n_rectangles--)
- {
- cairo_region_get_rectangle (expose->region, n_rectangles, &rectangle);
- gtk_icon_view_paint_rubberband (icon_view, cr, &rectangle);
- }
- }
+ gtk_icon_view_paint_rubberband (icon_view, cr);
cairo_destroy (cr);
@@ -3303,21 +3291,18 @@ gtk_icon_view_paint_item (GtkIconView *icon_view,
static void
gtk_icon_view_paint_rubberband (GtkIconView *icon_view,
- cairo_t *cr,
- GdkRectangle *area)
+ cairo_t *cr)
{
GdkRectangle rect;
- GdkRectangle rubber_rect;
GdkColor *fill_color_gdk;
guchar fill_color_alpha;
- rubber_rect.x = MIN (icon_view->priv->rubberband_x1, icon_view->priv->rubberband_x2);
- rubber_rect.y = MIN (icon_view->priv->rubberband_y1, icon_view->priv->rubberband_y2);
- rubber_rect.width = ABS (icon_view->priv->rubberband_x1 - icon_view->priv->rubberband_x2) + 1;
- rubber_rect.height = ABS (icon_view->priv->rubberband_y1 - icon_view->priv->rubberband_y2) + 1;
+ cairo_save (cr);
- if (!gdk_rectangle_intersect (&rubber_rect, area, &rect))
- return;
+ rect.x = MIN (icon_view->priv->rubberband_x1, icon_view->priv->rubberband_x2);
+ rect.y = MIN (icon_view->priv->rubberband_y1, icon_view->priv->rubberband_y2);
+ rect.width = ABS (icon_view->priv->rubberband_x1 - icon_view->priv->rubberband_x2) + 1;
+ rect.height = ABS (icon_view->priv->rubberband_y1 - icon_view->priv->rubberband_y2) + 1;
gtk_widget_style_get (GTK_WIDGET (icon_view),
"selection-box-color", &fill_color_gdk,
@@ -3327,29 +3312,21 @@ gtk_icon_view_paint_rubberband (GtkIconView *icon_view,
if (!fill_color_gdk)
fill_color_gdk = gdk_color_copy (>k_widget_get_style (GTK_WIDGET (icon_view))->base[GTK_STATE_SELECTED]);
- cairo_set_source_rgba (cr,
- fill_color_gdk->red / 65535.,
- fill_color_gdk->green / 65535.,
- fill_color_gdk->blue / 65535.,
- fill_color_alpha / 255.);
+ gdk_cairo_set_source_color (cr, fill_color_gdk);
- cairo_save (cr);
gdk_cairo_rectangle (cr, &rect);
cairo_clip (cr);
- cairo_paint (cr);
- /* Draw the border without alpha */
- cairo_set_source_rgb (cr,
- fill_color_gdk->red / 65535.,
- fill_color_gdk->green / 65535.,
- fill_color_gdk->blue / 65535.);
+ cairo_paint_with_alpha (cr, fill_color_alpha / 255.);
+
cairo_rectangle (cr,
- rubber_rect.x + 0.5, rubber_rect.y + 0.5,
- rubber_rect.width - 1, rubber_rect.height - 1);
+ rect.x + 0.5, rect.y + 0.5,
+ rect.width - 1, rect.height - 1);
cairo_stroke (cr);
- cairo_restore (cr);
gdk_color_free (fill_color_gdk);
+
+ cairo_restore (cr);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]