Fix pango markup

The condition checking if the markup is valid was inverted.

This commit also adds better error handling: if the markup cannot
be parsed, it fallbacks to plain text.
This commit is contained in:
emersion 2018-05-13 16:52:02 +01:00
parent 4dfb0529f8
commit 6eda10e4ca
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -77,19 +77,21 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font,
if (markup) {
char *buf;
GError *error = NULL;
bool result = pango_parse_markup(text, -1, 0, &attrs, &buf,
NULL, &error);
if (result) {
if (pango_parse_markup(text, -1, 0, &attrs, &buf, NULL, &error)) {
pango_layout_set_markup(layout, buf, -1);
free(buf);
} else {
wlr_log(L_ERROR, "pango_parse_markup '%s' -> error %s", text,
error->message);
return NULL;
g_error_free(error);
markup = false; // fallback to plain text
}
pango_layout_set_markup(layout, text, -1);
free(buf);
} else {
}
if (!markup) {
attrs = pango_attr_list_new();
pango_layout_set_text(layout, text, -1);
}
pango_attr_list_insert(attrs, pango_attr_scale_new(scale));
PangoFontDescription *desc = pango_font_description_from_string(font);
pango_layout_set_font_description(layout, desc);