Fix conversion to pango markup language when a rich text markup has spaces after the '<' character.
[GB.GTK] * BUG: Fix conversion to pango markup language when a rich text markup has spaces after the '<' character. [GB.GTK3] * BUG: Fix conversion to pango markup language when a rich text markup has spaces after the '<' character.
This commit is contained in:
parent
82dc368486
commit
c3e07f4a33
1 changed files with 20 additions and 4 deletions
|
@ -921,7 +921,9 @@ char *gt_html_to_pango_string(const char *html, int len_html, bool newline_are_b
|
||||||
GString *pango = g_string_new("");
|
GString *pango = g_string_new("");
|
||||||
const char *p, *p_end, *p_markup;
|
const char *p, *p_end, *p_markup;
|
||||||
char c;
|
char c;
|
||||||
char *token, *markup, **attr;
|
const char *token;
|
||||||
|
const char *markup;
|
||||||
|
char **attr;
|
||||||
const char *pp;
|
const char *pp;
|
||||||
gsize len;
|
gsize len;
|
||||||
bool start_token = false;
|
bool start_token = false;
|
||||||
|
@ -933,6 +935,8 @@ char *gt_html_to_pango_string(const char *html, int len_html, bool newline_are_b
|
||||||
bool newline = true;
|
bool newline = true;
|
||||||
bool inside_par = false;
|
bool inside_par = false;
|
||||||
|
|
||||||
|
//fprintf(stderr, "gt_html_to_pango_string: %.*s\n", len_html, html);
|
||||||
|
|
||||||
p_end = &html[len_html < 0 ? strlen(html) : len_html];
|
p_end = &html[len_html < 0 ? strlen(html) : len_html];
|
||||||
p_markup = NULL;
|
p_markup = NULL;
|
||||||
|
|
||||||
|
@ -995,7 +999,19 @@ char *gt_html_to_pango_string(const char *html, int len_html, bool newline_are_b
|
||||||
|
|
||||||
markup = g_strndup(p_markup, len);
|
markup = g_strndup(p_markup, len);
|
||||||
attr = g_strsplit(markup, " ", -1);
|
attr = g_strsplit(markup, " ", -1);
|
||||||
token = attr[0];
|
token = NULL;
|
||||||
|
|
||||||
|
for (pt = (const char **)attr; *pt; pt++)
|
||||||
|
{
|
||||||
|
if ((*pt)[0])
|
||||||
|
{
|
||||||
|
token = *pt;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!token)
|
||||||
|
goto __FOUND_TOKEN;
|
||||||
|
|
||||||
for (pt = title; *pt; pt += 2)
|
for (pt = title; *pt; pt += 2)
|
||||||
{
|
{
|
||||||
|
@ -1131,7 +1147,7 @@ char *gt_html_to_pango_string(const char *html, int len_html, bool newline_are_b
|
||||||
|
|
||||||
__FOUND_TOKEN:
|
__FOUND_TOKEN:
|
||||||
|
|
||||||
g_free(token);
|
g_strfreev(attr);
|
||||||
p_markup = NULL;
|
p_markup = NULL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1236,7 +1252,7 @@ char *gt_html_to_pango_string(const char *html, int len_html, bool newline_are_b
|
||||||
RETURN_STRING:
|
RETURN_STRING:
|
||||||
|
|
||||||
p = g_string_free(pango, false);
|
p = g_string_free(pango, false);
|
||||||
//fprintf(stderr, "pango: '%s'\n", p);
|
//fprintf(stderr, "==> '%s'\n", p);
|
||||||
return (char *)p;
|
return (char *)p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue