st-private: Don't create attr lists if we don't need them
Decorations are fairly uncommon in gnome-shell, so it's worthwhile to avoid effort creating empty attr lists. This can also help prevent a relayout. https://bugzilla.gnome.org/show_bug.cgi?id=689400
This commit is contained in:
parent
00c78d33e4
commit
7e5f1fe411
@ -173,7 +173,7 @@ _st_set_text_from_style (ClutterText *text,
|
|||||||
|
|
||||||
ClutterColor color;
|
ClutterColor color;
|
||||||
StTextDecoration decoration;
|
StTextDecoration decoration;
|
||||||
PangoAttrList *attribs;
|
PangoAttrList *attribs = NULL;
|
||||||
const PangoFontDescription *font;
|
const PangoFontDescription *font;
|
||||||
gchar *font_string;
|
gchar *font_string;
|
||||||
StTextAlign align;
|
StTextAlign align;
|
||||||
@ -186,26 +186,30 @@ _st_set_text_from_style (ClutterText *text,
|
|||||||
clutter_text_set_font_name (text, font_string);
|
clutter_text_set_font_name (text, font_string);
|
||||||
g_free (font_string);
|
g_free (font_string);
|
||||||
|
|
||||||
attribs = pango_attr_list_new ();
|
|
||||||
|
|
||||||
decoration = st_theme_node_get_text_decoration (theme_node);
|
decoration = st_theme_node_get_text_decoration (theme_node);
|
||||||
if (decoration & ST_TEXT_DECORATION_UNDERLINE)
|
if (decoration)
|
||||||
{
|
{
|
||||||
PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
|
attribs = pango_attr_list_new ();
|
||||||
pango_attr_list_insert (attribs, underline);
|
|
||||||
|
if (decoration & ST_TEXT_DECORATION_UNDERLINE)
|
||||||
|
{
|
||||||
|
PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
|
||||||
|
pango_attr_list_insert (attribs, underline);
|
||||||
|
}
|
||||||
|
if (decoration & ST_TEXT_DECORATION_LINE_THROUGH)
|
||||||
|
{
|
||||||
|
PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE);
|
||||||
|
pango_attr_list_insert (attribs, strikethrough);
|
||||||
|
}
|
||||||
|
/* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately
|
||||||
|
* skip BLINK (for now...)
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
if (decoration & ST_TEXT_DECORATION_LINE_THROUGH)
|
|
||||||
{
|
|
||||||
PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE);
|
|
||||||
pango_attr_list_insert (attribs, strikethrough);
|
|
||||||
}
|
|
||||||
/* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately
|
|
||||||
* skip BLINK (for now...)
|
|
||||||
*/
|
|
||||||
|
|
||||||
clutter_text_set_attributes (text, attribs);
|
clutter_text_set_attributes (text, attribs);
|
||||||
|
|
||||||
pango_attr_list_unref (attribs);
|
if (attribs)
|
||||||
|
pango_attr_list_unref (attribs);
|
||||||
|
|
||||||
align = st_theme_node_get_text_align (theme_node);
|
align = st_theme_node_get_text_align (theme_node);
|
||||||
if(align == ST_TEXT_ALIGN_JUSTIFY) {
|
if(align == ST_TEXT_ALIGN_JUSTIFY) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user