diff options
Diffstat (limited to 'src/entry_backend')
-rw-r--r-- | src/entry_backend/harfbuzz.c | 13 | ||||
-rw-r--r-- | src/entry_backend/pango.c | 15 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/entry_backend/harfbuzz.c b/src/entry_backend/harfbuzz.c index 58f4ca6..fe4d7dc 100644 --- a/src/entry_backend/harfbuzz.c +++ b/src/entry_backend/harfbuzz.c @@ -231,13 +231,22 @@ void entry_backend_harfbuzz_update(struct entry *entry) hb_buffer_add_utf8(buffer, entry->results.buf[i], -1, 0, -1); hb_shape(entry->harfbuzz.hb_font, buffer, NULL, 0); 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); } width = render_hb_buffer(cr, buffer); 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, width, font_extents.height); + 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); } } 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); |