mirror of
https://github.com/swaywm/sway.git
synced 2024-12-29 00:16:22 +01:00
Implement pango support
Implements support for the pango: prefix in the font command. Closes #1903.
This commit is contained in:
parent
72ce50737d
commit
556ff5f50e
3 changed files with 15 additions and 4 deletions
|
@ -305,6 +305,7 @@ struct sway_config {
|
||||||
enum sway_container_layout default_layout;
|
enum sway_container_layout default_layout;
|
||||||
char *font;
|
char *font;
|
||||||
size_t font_height;
|
size_t font_height;
|
||||||
|
bool pango_markup;
|
||||||
|
|
||||||
// Flags
|
// Flags
|
||||||
bool focus_follows_mouse;
|
bool focus_follows_mouse;
|
||||||
|
|
|
@ -12,7 +12,16 @@ struct cmd_results *cmd_font(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
char *font = join_args(argv, argc);
|
char *font = join_args(argv, argc);
|
||||||
free(config->font);
|
free(config->font);
|
||||||
config->font = strdup(font);
|
|
||||||
|
if (strncmp(font, "pango:", 6) == 0) {
|
||||||
|
config->pango_markup = true;
|
||||||
|
config->font = strdup(font + 6);
|
||||||
|
} else {
|
||||||
|
config->pango_markup = false;
|
||||||
|
config->font = strdup(font);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(font);
|
||||||
config_update_font_height(true);
|
config_update_font_height(true);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,7 +580,7 @@ static void update_title_texture(struct sway_container *con,
|
||||||
int height = config->font_height * scale;
|
int height = config->font_height * scale;
|
||||||
|
|
||||||
cairo_t *c = cairo_create(NULL);
|
cairo_t *c = cairo_create(NULL);
|
||||||
get_text_size(c, config->font, &width, NULL, scale, false,
|
get_text_size(c, config->font, &width, NULL, scale, config->pango_markup,
|
||||||
"%s", con->formatted_title);
|
"%s", con->formatted_title);
|
||||||
cairo_destroy(c);
|
cairo_destroy(c);
|
||||||
|
|
||||||
|
@ -596,7 +596,8 @@ static void update_title_texture(struct sway_container *con,
|
||||||
class->text[2], class->text[3]);
|
class->text[2], class->text[3]);
|
||||||
cairo_move_to(cairo, 0, 0);
|
cairo_move_to(cairo, 0, 0);
|
||||||
|
|
||||||
pango_printf(cairo, config->font, scale, false, "%s", con->formatted_title);
|
pango_printf(cairo, config->font, scale, config->pango_markup,
|
||||||
|
"%s", con->formatted_title);
|
||||||
|
|
||||||
cairo_surface_flush(surface);
|
cairo_surface_flush(surface);
|
||||||
unsigned char *data = cairo_image_surface_get_data(surface);
|
unsigned char *data = cairo_image_surface_get_data(surface);
|
||||||
|
@ -628,7 +629,7 @@ void container_calculate_title_height(struct sway_container *container) {
|
||||||
}
|
}
|
||||||
cairo_t *cairo = cairo_create(NULL);
|
cairo_t *cairo = cairo_create(NULL);
|
||||||
int height;
|
int height;
|
||||||
get_text_size(cairo, config->font, NULL, &height, 1, false,
|
get_text_size(cairo, config->font, NULL, &height, 1, config->pango_markup,
|
||||||
"%s", container->formatted_title);
|
"%s", container->formatted_title);
|
||||||
cairo_destroy(cairo);
|
cairo_destroy(cairo);
|
||||||
container->title_height = height;
|
container->title_height = height;
|
||||||
|
|
Loading…
Reference in a new issue