[gtk+/wip/pbor/css-text-attributes: 5/6] css: support text-decoration-color
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/pbor/css-text-attributes: 5/6] css: support text-decoration-color
- Date: Sun, 5 Jul 2015 21:31:58 +0000 (UTC)
commit 906e604c35cd94b50ad6048c604bd1ec8e36edbe
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Jul 5 22:05:33 2015 +0200
css: support text-decoration-color
gtk/gtkcssstylepropertyimpl.c | 10 ++++++++++
gtk/gtkcsstypesprivate.h | 1 +
gtk/gtkstylecontext.c | 12 ++++++++++++
3 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c
index 84af460..a155b98 100644
--- a/gtk/gtkcssstylepropertyimpl.c
+++ b/gtk/gtkcssstylepropertyimpl.c
@@ -1104,6 +1104,16 @@ _gtk_css_style_property_init_properties (void)
NULL,
_gtk_css_text_decoration_line_value_new
(GTK_CSS_TEXT_DECORATION_LINE_NONE));
+ gtk_css_style_property_register ("text-decoration-color",
+ GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR,
+ G_TYPE_NONE,
+ GTK_STYLE_PROPERTY_ANIMATED,
+ GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
+ color_parse,
+ NULL,
+ NULL,
+ _gtk_css_color_value_new_current_color ());
+
gtk_css_style_property_register ("text-shadow",
GTK_CSS_PROPERTY_TEXT_SHADOW,
G_TYPE_NONE,
diff --git a/gtk/gtkcsstypesprivate.h b/gtk/gtkcsstypesprivate.h
index cac528e..2f80491 100644
--- a/gtk/gtkcsstypesprivate.h
+++ b/gtk/gtkcsstypesprivate.h
@@ -120,6 +120,7 @@ enum { /*< skip >*/
GTK_CSS_PROPERTY_FONT_STRETCH,
GTK_CSS_PROPERTY_LETTER_SPACING,
GTK_CSS_PROPERTY_TEXT_DECORATION_LINE,
+ GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR,
GTK_CSS_PROPERTY_TEXT_SHADOW,
GTK_CSS_PROPERTY_BOX_SHADOW,
GTK_CSS_PROPERTY_MARGIN_TOP,
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 51c4a1c..70bc394 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -3164,18 +3164,30 @@ _gtk_style_context_get_pango_attributes (GtkStyleContext *context)
{
PangoAttrList *attrs = NULL;
GtkTextDecorationLine decoration_line;
+ const GdkRGBA *color;
+ const GdkRGBA *decoration_color;
gint letter_spacing;
/* text-decoration */
decoration_line = _gtk_css_text_decoration_line_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_TEXT_DECORATION_LINE));
+ color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
+ decoration_color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR));
switch (decoration_line)
{
case GTK_CSS_TEXT_DECORATION_LINE_UNDERLINE:
attrs = add_pango_attr (attrs, pango_attr_underline_new (PANGO_UNDERLINE_SINGLE));
+ if (!gdk_rgba_equal(color, decoration_color))
+ attrs = add_pango_attr (attrs, pango_attr_underline_color_new (decoration_color->red * 65535. + 0.5,
+ decoration_color->green * 65535. +
0.5,
+ decoration_color->blue * 65535. +
0.5));
break;
case GTK_CSS_TEXT_DECORATION_LINE_LINE_THROUGH:
attrs = add_pango_attr (attrs, pango_attr_strikethrough_new (TRUE));
+ if (!gdk_rgba_equal(color, decoration_color))
+ attrs = add_pango_attr (attrs, pango_attr_strikethrough_color_new (decoration_color->red * 65535. +
0.5,
+ decoration_color->green * 65535.
+ 0.5,
+ decoration_color->blue * 65535. +
0.5));
break;
case GTK_CSS_TEXT_DECORATION_LINE_NONE:
default:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]