~adnano/wmenu

9ee9da3d8317e666cdde83e14caac3e632096f53 — Nikita Ivanov 3 months ago 8b1724c
Fix crash when some line contains %
2 files changed, 7 insertions(+), 7 deletions(-)

M main.c
M pango.c
M main.c => main.c +6 -6
@@ 110,7 110,7 @@ int render_text(struct menu_state *state, cairo_t *cairo, const char *str,
		int left_padding, int right_padding) {

	int text_width, text_height;
	get_text_size(cairo, state->font, &text_width, &text_height, NULL, 1, str);
	get_text_size(cairo, state->font, &text_width, &text_height, NULL, 1, "%s", str);
	int text_y = (state->line_height / 2.0) - (text_height / 2.0);

	if (background) {


@@ 122,7 122,7 @@ int render_text(struct menu_state *state, cairo_t *cairo, const char *str,

	cairo_move_to(cairo, x + left_padding, y + text_y);
	cairo_set_source_u32(cairo, foreground);
	pango_printf(cairo, state->font, 1, str);
	pango_printf(cairo, state->font, 1, "%s", str);

	return x + text_width + left_padding + right_padding;
}


@@ 133,7 133,7 @@ int render_horizontal_item(struct menu_state *state, cairo_t *cairo, const char 
		int left_padding, int right_padding) {

	int text_width, text_height;
	get_text_size(cairo, state->font, &text_width, &text_height, NULL, 1, str);
	get_text_size(cairo, state->font, &text_width, &text_height, NULL, 1, "%s", str);
	int text_y = (state->line_height / 2.0) - (text_height / 2.0);

	if (x + left_padding + text_width > width) {


@@ 148,7 148,7 @@ int render_horizontal_item(struct menu_state *state, cairo_t *cairo, const char 

		cairo_move_to(cairo, x + left_padding, y + text_y);
		cairo_set_source_u32(cairo, foreground);
		pango_printf(cairo, state->font, 1, str);
		pango_printf(cairo, state->font, 1, "%s", str);
	}

	return x + text_width + left_padding + right_padding;


@@ 160,7 160,7 @@ void render_vertical_item(struct menu_state *state, cairo_t *cairo, const char *
		int left_padding) {

	int text_height;
	get_text_size(cairo, state->font, NULL, &text_height, NULL, 1, str);
	get_text_size(cairo, state->font, NULL, &text_height, NULL, 1, "%s", str);
	int text_y = (state->line_height / 2.0) - (text_height / 2.0);

	if (background) {


@@ 172,7 172,7 @@ void render_vertical_item(struct menu_state *state, cairo_t *cairo, const char *

	cairo_move_to(cairo, x + left_padding, y + text_y);
	cairo_set_source_u32(cairo, foreground);
	pango_printf(cairo, state->font, 1, str);
	pango_printf(cairo, state->font, 1, "%s", str);
}

void scroll_matches(struct menu_state *state) {

M pango.c => pango.c +1 -1
@@ 66,7 66,7 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height,

int text_width(cairo_t *cairo, const char *font, const char *text) {
	int text_width;
	get_text_size(cairo, font, &text_width, NULL, NULL, 1, text);
	get_text_size(cairo, font, &text_width, NULL, NULL, 1, "%s", text);
	return text_width;
}