diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2010-10-06 17:36:58 +0200 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2010-10-08 17:23:23 +0200 |
commit | 407666719856127547f5c2f3f03f6a050858239a (patch) | |
tree | f7e86754a71843bb9f481f89c7b0761294f0bd4c /eel | |
parent | 75e101268198ce92e8165c7adda55cac69d1f93a (diff) | |
download | nautilus-407666719856127547f5c2f3f03f6a050858239a.tar.gz |
editable-label: fix cairo drawing regressions
Diffstat (limited to 'eel')
-rw-r--r-- | eel/eel-editable-label.c | 15 |
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, >k_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)) |