Merge pull request #3179 from baloo/baloo/title_format-pango_markup

fixes pango_markup support with title_format
This commit is contained in:
emersion 2018-11-24 23:07:13 +01:00 committed by GitHub
commit 827e5513e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -824,12 +824,30 @@ struct sway_view *view_from_wlr_surface(struct wlr_surface *wlr_surface) {
return NULL; 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) { static size_t append_prop(char *buffer, const char *value) {
if (!value) { if (!value) {
return 0; return 0;
} }
lenient_strcat(buffer, value); // if using pango_markup in font, we need to escape all markup char
return strlen(value); // 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; 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) { void view_update_title(struct sway_view *view, bool force) {
const char *title = view_get_title(view); const char *title = view_get_title(view);
@ -912,10 +922,6 @@ void view_update_title(struct sway_view *view, bool force) {
return; return;
} }
parse_title_format(view, buffer); 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->title = strdup(title);
view->container->formatted_title = buffer; view->container->formatted_title = buffer;