mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-10 05:33:51 -04:00
render: draw (cursor) bar using the same thickness as underlines
This commit is contained in:
parent
0fceed6f00
commit
e8d187e4f3
1 changed files with 7 additions and 5 deletions
12
render.c
12
render.c
|
|
@ -101,6 +101,7 @@ font_baseline(const struct terminal *term)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
draw_bar(const struct terminal *term, pixman_image_t *pix,
|
draw_bar(const struct terminal *term, pixman_image_t *pix,
|
||||||
|
const struct font *font,
|
||||||
const pixman_color_t *color, int x, int y)
|
const pixman_color_t *color, int x, int y)
|
||||||
{
|
{
|
||||||
int baseline = y + font_baseline(term) - term->fextents.ascent;
|
int baseline = y + font_baseline(term) - term->fextents.ascent;
|
||||||
|
|
@ -108,7 +109,7 @@ draw_bar(const struct terminal *term, pixman_image_t *pix,
|
||||||
PIXMAN_OP_SRC, pix, color,
|
PIXMAN_OP_SRC, pix, color,
|
||||||
1, &(pixman_rectangle16_t){
|
1, &(pixman_rectangle16_t){
|
||||||
x, baseline,
|
x, baseline,
|
||||||
1, term->fextents.ascent + term->fextents.descent});
|
font->underline.thickness, term->fextents.ascent + term->fextents.descent});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -259,7 +260,7 @@ render_cell(struct terminal *term, pixman_image_t *pix,
|
||||||
cursor_color = fg;
|
cursor_color = fg;
|
||||||
|
|
||||||
if (term->cursor_style == CURSOR_BAR)
|
if (term->cursor_style == CURSOR_BAR)
|
||||||
draw_bar(term, pix, &cursor_color, x, y);
|
draw_bar(term, pix, font, &cursor_color, x, y);
|
||||||
else if (term->cursor_style == CURSOR_UNDERLINE)
|
else if (term->cursor_style == CURSOR_UNDERLINE)
|
||||||
draw_underline(
|
draw_underline(
|
||||||
term, pix, attrs_to_font(term, &cell->attrs), &cursor_color,
|
term, pix, attrs_to_font(term, &cell->attrs), &cursor_color,
|
||||||
|
|
@ -734,6 +735,7 @@ render_search_box(struct terminal *term)
|
||||||
PIXMAN_OP_SRC, buf->pix, &color,
|
PIXMAN_OP_SRC, buf->pix, &color,
|
||||||
1, &(pixman_rectangle16_t){0, 0, width, height});
|
1, &(pixman_rectangle16_t){0, 0, width, height});
|
||||||
|
|
||||||
|
struct font *font = &term->fonts[0];
|
||||||
int x = margin;
|
int x = margin;
|
||||||
int y = margin;
|
int y = margin;
|
||||||
pixman_color_t fg = color_hex_to_pixman(0x000000);
|
pixman_color_t fg = color_hex_to_pixman(0x000000);
|
||||||
|
|
@ -741,9 +743,9 @@ render_search_box(struct terminal *term)
|
||||||
/* Text (what the user entered - *not* match(es)) */
|
/* Text (what the user entered - *not* match(es)) */
|
||||||
for (size_t i = 0; i < term->search.len; i++) {
|
for (size_t i = 0; i < term->search.len; i++) {
|
||||||
if (i == term->search.cursor)
|
if (i == term->search.cursor)
|
||||||
draw_bar(term, buf->pix, &fg, x, y);
|
draw_bar(term, buf->pix, font, &fg, x, y);
|
||||||
|
|
||||||
const struct glyph *glyph = font_glyph_for_wc(&term->fonts[0], term->search.buf[i]);
|
const struct glyph *glyph = font_glyph_for_wc(font, term->search.buf[i]);
|
||||||
if (glyph == NULL)
|
if (glyph == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -758,7 +760,7 @@ render_search_box(struct terminal *term)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (term->search.cursor >= term->search.len)
|
if (term->search.cursor >= term->search.len)
|
||||||
draw_bar(term, buf->pix, &fg, x, y);
|
draw_bar(term, buf->pix, font, &fg, x, y);
|
||||||
|
|
||||||
wl_subsurface_set_position(
|
wl_subsurface_set_position(
|
||||||
term->wl.search_sub_surface,
|
term->wl.search_sub_surface,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue