Merge pull request #1917 from RyanDwyer/pango-markup

Implement pango support
This commit is contained in:
emersion 2018-05-05 23:38:09 +01:00 committed by GitHub
commit 54265bf65e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 4 deletions

View File

@ -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;

View File

@ -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);
if (strncmp(font, "pango:", 6) == 0) {
config->pango_markup = true;
config->font = strdup(font + 6);
} else {
config->pango_markup = false;
config->font = strdup(font); 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);
} }

View File

@ -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;