diff options
author | emersion <contact@emersion.fr> | 2018-11-24 23:07:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-24 23:07:13 +0100 |
commit | 827e5513e030eff40323832466e8a39f11aae4eb (patch) | |
tree | c4e3a60478d6ca1fe856dbe46943a15238d8b8df /sway | |
parent | d440468d2deb31d311564a5b796608136cf99e49 (diff) | |
parent | caee2dff03fc007dc46cf121e013f5347ac46ba9 (diff) |
Merge pull request #3179 from baloo/baloo/title_format-pango_markup
fixes pango_markup support with title_format
Diffstat (limited to 'sway')
-rw-r--r-- | sway/tree/view.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index d7110619..63bb8e26 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -824,12 +824,30 @@ struct sway_view *view_from_wlr_surface(struct wlr_surface *wlr_surface) { return NULL; } +static char *escape_pango_markup(const char *buffer) { + size_t length = escape_markup_text(buffer, NULL); + char *escaped_title = calloc(length + 1, sizeof(char)); + escape_markup_text(buffer, escaped_title); + return escaped_title; +} + static size_t append_prop(char *buffer, const char *value) { if (!value) { return 0; } - lenient_strcat(buffer, value); - return strlen(value); + // if using pango_markup in font, we need to escape all markup char + // from values to avoid messing with pango markup + if (!config->pango_markup) { + char *escaped_value = escape_pango_markup(value); + + lenient_strcat(buffer, escaped_value); + size_t len = strlen(escaped_value); + free(escaped_value); + return len; + } else { + lenient_strcat(buffer, value); + return strlen(value); + } } /** @@ -882,14 +900,6 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) { return len; } -static char *escape_title(char *buffer) { - size_t length = escape_markup_text(buffer, NULL); - char *escaped_title = calloc(length + 1, sizeof(char)); - escape_markup_text(buffer, escaped_title); - free(buffer); - return escaped_title; -} - void view_update_title(struct sway_view *view, bool force) { const char *title = view_get_title(view); @@ -912,10 +922,6 @@ void view_update_title(struct sway_view *view, bool force) { return; } parse_title_format(view, buffer); - // now we have the title, but needs to be escaped when using pango markup - if (config->pango_markup) { - buffer = escape_title(buffer); - } view->container->title = strdup(title); view->container->formatted_title = buffer; |