summaryrefslogtreecommitdiff
path: root/eel
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2010-10-06 17:36:58 +0200
committerCosimo Cecchi <cosimoc@gnome.org>2010-10-08 17:23:23 +0200
commit407666719856127547f5c2f3f03f6a050858239a (patch)
treef7e86754a71843bb9f481f89c7b0761294f0bd4c /eel
parent75e101268198ce92e8165c7adda55cac69d1f93a (diff)
downloadnautilus-407666719856127547f5c2f3f03f6a050858239a.tar.gz
editable-label: fix cairo drawing regressions
Diffstat (limited to 'eel')
-rw-r--r--eel/eel-editable-label.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/eel/eel-editable-label.c b/eel/eel-editable-label.c
index 6215912cb..531a223aa 100644
--- a/eel/eel-editable-label.c
+++ b/eel/eel-editable-label.c
@@ -1458,19 +1458,22 @@ eel_editable_label_draw_cursor (EelEditableLabel *label, cairo_t *cr, gint xoff
gtk_draw_insertion_cursor (widget, cr,
&cursor_location,
- FALSE, dir1, TRUE);
+ FALSE, dir2, TRUE);
}
}
else /* Block cursor */
{
cairo_region_t *clip;
+ cairo_save (cr);
+
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_rectangle (cr,
xoffset + PANGO_PIXELS (strong_pos.x),
yoffset + PANGO_PIXELS (strong_pos.y),
PANGO_PIXELS (strong_pos.width),
PANGO_PIXELS (strong_pos.height));
+ cairo_fill (cr);
if (!block_at_line_end)
{
@@ -1480,11 +1483,6 @@ eel_editable_label_draw_cursor (EelEditableLabel *label, cairo_t *cr, gint xoff
gdk_cairo_region (cr, clip);
cairo_clip (cr);
-
- /* FIXME should use gtk_paint, but it can't use a clip
- * region
- */
-
gdk_cairo_set_source_color (cr,
&gtk_widget_get_style (widget)->base[GTK_STATE_NORMAL]);
cairo_move_to (cr, xoffset, yoffset);
@@ -1492,6 +1490,8 @@ eel_editable_label_draw_cursor (EelEditableLabel *label, cairo_t *cr, gint xoff
cairo_region_destroy (clip);
}
+
+ cairo_restore (cr);
}
}
}
@@ -1555,6 +1555,8 @@ eel_editable_label_draw (GtkWidget *widget,
x, y,
range,
1);
+ cairo_save (cr);
+
gdk_cairo_region (cr, clip);
cairo_clip (cr);
@@ -1569,6 +1571,7 @@ eel_editable_label_draw (GtkWidget *widget,
cairo_move_to (cr, x, y);
pango_cairo_show_layout (cr, label->layout);
+ cairo_restore (cr);
cairo_region_destroy (clip);
}
else if (gtk_widget_has_focus (widget))