diff options
Diffstat (limited to 'src/entry_backend/pango.c')
-rw-r--r-- | src/entry_backend/pango.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/entry_backend/pango.c b/src/entry_backend/pango.c index 019933e..8a0add7 100644 --- a/src/entry_backend/pango.c +++ b/src/entry_backend/pango.c @@ -87,15 +87,24 @@ void entry_backend_pango_update(struct entry *entry) pango_layout_set_text(layout, str, -1); pango_cairo_update_layout(cr, layout); if (i == entry->selection) { - cairo_save(cr); - color = entry->selection_color; + cairo_push_group(cr); + color = entry->selection_foreground_color; cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); } pango_cairo_show_layout(cr, layout); + pango_layout_get_size(layout, &width, &height); if (i == entry->selection) { + cairo_pop_group_to_source(cr); + cairo_save(cr); + color = entry->selection_background_color; + cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); + cairo_rectangle(cr, 0, 0, (int)(width / PANGO_SCALE), (int)(height / PANGO_SCALE)); + cairo_fill(cr); cairo_restore(cr); + cairo_paint(cr); + color = entry->foreground_color; + cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); } - pango_layout_get_size(layout, &width, &height); } cairo_restore(cr); |