aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-05 12:53:49 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-06 08:25:22 +1000
commit556ff5f50efe7372f0147339d6c26ed7008acfd2 (patch)
treead5c1774aa51ee8a1755154471fb802c626f55ab
parentMerge pull request #1926 from RyanDwyer/fix-setenv-path (diff)
downloadsway-556ff5f50efe7372f0147339d6c26ed7008acfd2.tar.gz
sway-556ff5f50efe7372f0147339d6c26ed7008acfd2.tar.zst
sway-556ff5f50efe7372f0147339d6c26ed7008acfd2.zip
Implement pango support
Implements support for the pango: prefix in the font command. Closes #1903.
-rw-r--r--include/sway/config.h1
-rw-r--r--sway/commands/font.c11
-rw-r--r--sway/tree/container.c7
3 files changed, 15 insertions, 4 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index fa40ef4e..a0e7e81f 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -305,6 +305,7 @@ struct sway_config {
305 enum sway_container_layout default_layout; 305 enum sway_container_layout default_layout;
306 char *font; 306 char *font;
307 size_t font_height; 307 size_t font_height;
308 bool pango_markup;
308 309
309 // Flags 310 // Flags
310 bool focus_follows_mouse; 311 bool focus_follows_mouse;
diff --git a/sway/commands/font.c b/sway/commands/font.c
index 8e0b51e3..3071ccd8 100644
--- a/sway/commands/font.c
+++ b/sway/commands/font.c
@@ -12,7 +12,16 @@ struct cmd_results *cmd_font(int argc, char **argv) {
12 } 12 }
13 char *font = join_args(argv, argc); 13 char *font = join_args(argv, argc);
14 free(config->font); 14 free(config->font);
15 config->font = strdup(font); 15
16 if (strncmp(font, "pango:", 6) == 0) {
17 config->pango_markup = true;
18 config->font = strdup(font + 6);
19 } else {
20 config->pango_markup = false;
21 config->font = strdup(font);
22 }
23
24 free(font);
16 config_update_font_height(true); 25 config_update_font_height(true);
17 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 26 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
18} 27}
diff --git a/sway/tree/container.c b/sway/tree/container.c
index e1be32d1..38db29c2 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -580,7 +580,7 @@ static void update_title_texture(struct sway_container *con,
580 int height = config->font_height * scale; 580 int height = config->font_height * scale;
581 581
582 cairo_t *c = cairo_create(NULL); 582 cairo_t *c = cairo_create(NULL);
583 get_text_size(c, config->font, &width, NULL, scale, false, 583 get_text_size(c, config->font, &width, NULL, scale, config->pango_markup,
584 "%s", con->formatted_title); 584 "%s", con->formatted_title);
585 cairo_destroy(c); 585 cairo_destroy(c);
586 586
@@ -596,7 +596,8 @@ static void update_title_texture(struct sway_container *con,
596 class->text[2], class->text[3]); 596 class->text[2], class->text[3]);
597 cairo_move_to(cairo, 0, 0); 597 cairo_move_to(cairo, 0, 0);
598 598
599 pango_printf(cairo, config->font, scale, false, "%s", con->formatted_title); 599 pango_printf(cairo, config->font, scale, config->pango_markup,
600 "%s", con->formatted_title);
600 601
601 cairo_surface_flush(surface); 602 cairo_surface_flush(surface);
602 unsigned char *data = cairo_image_surface_get_data(surface); 603 unsigned char *data = cairo_image_surface_get_data(surface);
@@ -628,7 +629,7 @@ void container_calculate_title_height(struct sway_container *container) {
628 } 629 }
629 cairo_t *cairo = cairo_create(NULL); 630 cairo_t *cairo = cairo_create(NULL);
630 int height; 631 int height;
631 get_text_size(cairo, config->font, NULL, &height, 1, false, 632 get_text_size(cairo, config->font, NULL, &height, 1, config->pango_markup,
632 "%s", container->formatted_title); 633 "%s", container->formatted_title);
633 cairo_destroy(cairo); 634 cairo_destroy(cairo);
634 container->title_height = height; 635 container->title_height = height;