[gtk/new-text-attributes] Make overline support conditional
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/new-text-attributes] Make overline support conditional
- Date: Sat, 21 Mar 2020 05:20:09 +0000 (UTC)
commit 9259efb5d7a579b3e1221f42490e4f9a3404baad
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Mar 21 00:44:04 2020 -0400
Make overline support conditional
The ci image does not have Pango 1.45, so for the
time being, make the overline support conditional
on Pango being new enough.
gtk/gtktextbuffer.c | 10 ++++---
gtk/gtktextlayout.c | 22 ++++++++------
gtk/gtktexttag.c | 84 ++++++++++++++++++++++++++++++++---------------------
3 files changed, 70 insertions(+), 46 deletions(-)
---
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index 610d79da10..7dd04c5e24 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -4758,10 +4758,6 @@ get_tag_for_attributes (PangoAttrIterator *iter)
if (attr)
g_object_set (tag, "underline", ((PangoAttrInt*)attr)->value, NULL);
- attr = pango_attr_iterator_get (iter, PANGO_ATTR_OVERLINE);
- if (attr)
- g_object_set (tag, "overline", ((PangoAttrInt*)attr)->value, NULL);
-
attr = pango_attr_iterator_get (iter, PANGO_ATTR_UNDERLINE_COLOR);
if (attr)
{
@@ -4776,6 +4772,11 @@ get_tag_for_attributes (PangoAttrIterator *iter)
g_object_set (tag, "underline-rgba", &rgba, NULL);
}
+#if PANGO_VERSION_CHECK(1,45,0)
+ attr = pango_attr_iterator_get (iter, PANGO_ATTR_OVERLINE);
+ if (attr)
+ g_object_set (tag, "overline", ((PangoAttrInt*)attr)->value, NULL);
+
attr = pango_attr_iterator_get (iter, PANGO_ATTR_OVERLINE_COLOR);
if (attr)
{
@@ -4789,6 +4790,7 @@ get_tag_for_attributes (PangoAttrIterator *iter)
rgba.alpha = 1.;
g_object_set (tag, "overline-rgba", &rgba, NULL);
}
+#endif
attr = pango_attr_iterator_get (iter, PANGO_ATTR_STRIKETHROUGH);
if (attr)
diff --git a/gtk/gtktextlayout.c b/gtk/gtktextlayout.c
index 70028c77d9..a646151f29 100644
--- a/gtk/gtktextlayout.c
+++ b/gtk/gtktextlayout.c
@@ -1585,9 +1585,11 @@ add_generic_attrs (GtkTextLayout *layout,
pango_attr_list_insert (attrs, attr);
}
- if (appearance->overline != PANGO_OVERLINE_NONE)
+ if (appearance->underline_rgba)
{
- attr = pango_attr_overline_new (appearance->overline);
+ attr = pango_attr_underline_color_new (appearance->underline_rgba->red * 65535,
+ appearance->underline_rgba->green * 65535,
+ appearance->underline_rgba->blue * 65535);
attr->start_index = start;
attr->end_index = start + byte_count;
@@ -1595,11 +1597,10 @@ add_generic_attrs (GtkTextLayout *layout,
pango_attr_list_insert (attrs, attr);
}
- if (appearance->underline_rgba)
+#if PANGO_VERSION_CHECK(1,45,0)
+ if (appearance->overline != PANGO_OVERLINE_NONE)
{
- attr = pango_attr_underline_color_new (appearance->underline_rgba->red * 65535,
- appearance->underline_rgba->green * 65535,
- appearance->underline_rgba->blue * 65535);
+ attr = pango_attr_overline_new (appearance->overline);
attr->start_index = start;
attr->end_index = start + byte_count;
@@ -1618,6 +1619,7 @@ add_generic_attrs (GtkTextLayout *layout,
pango_attr_list_insert (attrs, attr);
}
+#endif
if (appearance->strikethrough)
{
@@ -2131,21 +2133,23 @@ add_preedit_attrs (GtkTextLayout *layout,
case PANGO_ATTR_UNDERLINE:
appearance.underline = ((PangoAttrInt *)attr)->value;
break;
- case PANGO_ATTR_OVERLINE:
- appearance.overline = ((PangoAttrInt *)attr)->value;
- break;
case PANGO_ATTR_UNDERLINE_COLOR:
convert_color (&rgba, (PangoAttrColor*)attr);
if (appearance.underline_rgba)
gdk_rgba_free (appearance.underline_rgba);
appearance.underline_rgba = gdk_rgba_copy (&rgba);
break;
+#if PANGO_VERSION_CHECK(1,45,0)
+ case PANGO_ATTR_OVERLINE:
+ appearance.overline = ((PangoAttrInt *)attr)->value;
+ break;
case PANGO_ATTR_OVERLINE_COLOR:
convert_color (&rgba, (PangoAttrColor*)attr);
if (appearance.overline_rgba)
gdk_rgba_free (appearance.overline_rgba);
appearance.overline_rgba = gdk_rgba_copy (&rgba);
break;
+#endif
case PANGO_ATTR_STRIKETHROUGH:
appearance.strikethrough = ((PangoAttrInt *)attr)->value;
break;
diff --git a/gtk/gtktexttag.c b/gtk/gtktexttag.c
index 7465465eb9..8f0553aafe 100644
--- a/gtk/gtktexttag.c
+++ b/gtk/gtktexttag.c
@@ -116,9 +116,11 @@ enum {
PROP_STRIKETHROUGH_RGBA,
PROP_RIGHT_MARGIN,
PROP_UNDERLINE,
- PROP_OVERLINE,
PROP_UNDERLINE_RGBA,
+#if PANGO_VERSION_CHECK(1,45,0)
+ PROP_OVERLINE,
PROP_OVERLINE_RGBA,
+#endif
PROP_RISE,
PROP_BACKGROUND_FULL_HEIGHT,
PROP_LANGUAGE,
@@ -158,9 +160,11 @@ enum {
PROP_STRIKETHROUGH_RGBA_SET,
PROP_RIGHT_MARGIN_SET,
PROP_UNDERLINE_SET,
- PROP_OVERLINE_SET,
PROP_UNDERLINE_RGBA_SET,
+#if PANGO_VERSION_CHECK(1,45,0)
+ PROP_OVERLINE_SET,
PROP_OVERLINE_RGBA_SET,
+#endif
PROP_RISE_SET,
PROP_BACKGROUND_FULL_HEIGHT_SET,
PROP_LANGUAGE_SET,
@@ -492,15 +496,6 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
PANGO_UNDERLINE_NONE,
GTK_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_OVERLINE,
- g_param_spec_enum ("overline",
- P_("Overline"),
- P_("Style of overline for this text"),
- PANGO_TYPE_OVERLINE,
- PANGO_OVERLINE_NONE,
- GTK_PARAM_READWRITE));
-
/**
* GtkTextTag:underline-rgba:
*
@@ -519,6 +514,16 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
GDK_TYPE_RGBA,
GTK_PARAM_READWRITE));
+#if PANGO_VERSION_CHECK(1,45,0)
+ g_object_class_install_property (object_class,
+ PROP_OVERLINE,
+ g_param_spec_enum ("overline",
+ P_("Overline"),
+ P_("Style of overline for this text"),
+ PANGO_TYPE_OVERLINE,
+ PANGO_OVERLINE_NONE,
+ GTK_PARAM_READWRITE));
+
g_object_class_install_property (object_class,
PROP_OVERLINE_RGBA,
g_param_spec_boxed ("overline-rgba",
@@ -526,6 +531,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
P_("Color of overline for this text"),
GDK_TYPE_RGBA,
GTK_PARAM_READWRITE));
+#endif
/**
* GtkTextTag:strikethrough-rgba:
@@ -778,10 +784,6 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
P_("Underline set"),
P_("Whether this tag affects underlining"));
- ADD_SET_PROP ("overline-set", PROP_OVERLINE_SET,
- P_("Overline set"),
- P_("Whether this tag affects overlining"));
-
/**
* GtkTextTag:underline-rgba-set:
*
@@ -791,9 +793,15 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
P_("Underline RGBA set"),
P_("Whether this tag affects underlining color"));
+#if PANGO_VERSION_CHECK(1,45,0)
+ ADD_SET_PROP ("overline-set", PROP_OVERLINE_SET,
+ P_("Overline set"),
+ P_("Whether this tag affects overlining"));
+
ADD_SET_PROP ("overline-rgba-set", PROP_OVERLINE_RGBA_SET,
P_("Overline RGBA set"),
P_("Whether this tag affects overlining color"));
+#endif
/**
* GtkTextTag:strikethrough-rgba-set:
@@ -921,6 +929,7 @@ set_underline_rgba (GtkTextTag *tag,
}
}
+#if PANGO_VERSION_CHECK(1,45,0)
static void
set_overline_rgba (GtkTextTag *tag,
const GdkRGBA *rgba)
@@ -950,6 +959,7 @@ set_overline_rgba (GtkTextTag *tag,
}
}
}
+#endif
static void
set_strikethrough_rgba (GtkTextTag *tag,
@@ -1468,12 +1478,6 @@ gtk_text_tag_set_property (GObject *object,
g_object_notify (object, "underline-set");
break;
- case PROP_OVERLINE:
- priv->overline_set = TRUE;
- priv->values->appearance.overline = g_value_get_enum (value);
- g_object_notify (object, "overline-set");
- break;
-
case PROP_UNDERLINE_RGBA:
{
GdkRGBA *color = g_value_get_boxed (value);
@@ -1481,12 +1485,20 @@ gtk_text_tag_set_property (GObject *object,
}
break;
+#if PANGO_VERSION_CHECK(1,45,0)
+ case PROP_OVERLINE:
+ priv->overline_set = TRUE;
+ priv->values->appearance.overline = g_value_get_enum (value);
+ g_object_notify (object, "overline-set");
+ break;
+
case PROP_OVERLINE_RGBA:
{
GdkRGBA *color = g_value_get_boxed (value);
set_overline_rgba (text_tag, color);
}
break;
+#endif
case PROP_RISE:
priv->rise_set = TRUE;
@@ -1686,17 +1698,19 @@ gtk_text_tag_set_property (GObject *object,
priv->underline_set = g_value_get_boolean (value);
break;
- case PROP_OVERLINE_SET:
- priv->overline_set = g_value_get_boolean (value);
- break;
-
case PROP_UNDERLINE_RGBA_SET:
priv->underline_rgba_set = g_value_get_boolean (value);
break;
+#if PANGO_VERSION_CHECK(1,45,0)
+ case PROP_OVERLINE_SET:
+ priv->overline_set = g_value_get_boolean (value);
+ break;
+
case PROP_OVERLINE_RGBA_SET:
priv->overline_rgba_set = g_value_get_boolean (value);
break;
+#endif
case PROP_RISE_SET:
priv->rise_set = g_value_get_boolean (value);
@@ -1894,19 +1908,21 @@ gtk_text_tag_get_property (GObject *object,
g_value_set_enum (value, priv->values->appearance.underline);
break;
- case PROP_OVERLINE:
- g_value_set_enum (value, priv->values->appearance.overline);
- break;
-
case PROP_UNDERLINE_RGBA:
if (priv->underline_rgba_set)
g_value_set_boxed (value, priv->values->appearance.underline_rgba);
break;
+#if PANGO_VERSION_CHECK(1,45,0)
+ case PROP_OVERLINE:
+ g_value_set_enum (value, priv->values->appearance.overline);
+ break;
+
case PROP_OVERLINE_RGBA:
if (priv->overline_rgba_set)
g_value_set_boxed (value, priv->values->appearance.overline_rgba);
break;
+#endif
case PROP_RISE:
g_value_set_int (value, priv->values->appearance.rise);
@@ -2036,17 +2052,19 @@ gtk_text_tag_get_property (GObject *object,
g_value_set_boolean (value, priv->underline_set);
break;
- case PROP_OVERLINE_SET:
- g_value_set_boolean (value, priv->overline_set);
- break;
-
case PROP_UNDERLINE_RGBA_SET:
g_value_set_boolean (value, priv->underline_rgba_set);
break;
+#if PANGO_VERSION_CHECK(1,45,0)
+ case PROP_OVERLINE_SET:
+ g_value_set_boolean (value, priv->overline_set);
+ break;
+
case PROP_OVERLINE_RGBA_SET:
g_value_set_boolean (value, priv->overline_rgba_set);
break;
+#endif
case PROP_RISE_SET:
g_value_set_boolean (value, priv->rise_set);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]