diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f1d1939a74..0c03e3cfcd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,6 +72,7 @@ fedora-x86_64: variables: EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both" script: + - meson subprojects update - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} -Dprofiler=true _build @@ -87,6 +88,7 @@ release-build: variables: EXTRA_MESON_FLAGS: "--buildtype=release" script: + - meson subprojects update - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build - ninja -C _build @@ -99,6 +101,7 @@ installed-tests: variables: EXTRA_MESON_FLAGS: "--prefix=/usr --libdir=/usr/lib64 -Dinstall-tests=true" script: + - meson subprojects update - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS} ${BACKEND_FLAGS} ${FEATURE_FLAGS} _build - ninja -C _build diff --git a/gdk/gdkrgba.c b/gdk/gdkrgba.c index 20940db9d3..fac9d2efa5 100644 --- a/gdk/gdkrgba.c +++ b/gdk/gdkrgba.c @@ -170,19 +170,21 @@ parse_rgb_value (const char *str, * - A standard name (Taken from the X11 rgb.txt file). * - A hexadecimal value in the form “\#rgb”, “\#rrggbb”, * “\#rrrgggbbb” or ”\#rrrrggggbbbb” + * - A hexadecimal value in the form “\#rgba”, “\#rrggbbaa”, + * or ”\#rrrrggggbbbbaaaa” * - A RGB color in the form “rgb(r,g,b)” (In this case the color will * have full opacity) * - A RGBA color in the form “rgba(r,g,b,a)” * * Where “r”, “g”, “b” and “a” are respectively the red, green, blue and - * alpha color values. In the last two cases, “r”, “g”, and “b” are either integers - * in the range 0 to 255 or percentage values in the range 0% to 100%, and - * a is a floating point value in the range 0 to 1. + * alpha color values. In the last two cases, “r”, “g”, and “b” are either + * integers in the range 0 to 255 or percentage values in the range 0% to + * 100%, and a is a floating point value in the range 0 to 1. * * Returns: %TRUE if the parsing succeeded */ gboolean -gdk_rgba_parse (GdkRGBA *rgba, +gdk_rgba_parse (GdkRGBA *rgba, const char *spec) { gboolean has_alpha; @@ -207,18 +209,19 @@ gdk_rgba_parse (GdkRGBA *rgba, else { PangoColor pango_color; + guint16 alpha; /* Resort on PangoColor for rgb.txt color * map and '#' prefixed colors */ - if (pango_color_parse (&pango_color, str)) + if (pango_color_parse_with_alpha (&pango_color, &alpha, str)) { if (rgba) { rgba->red = pango_color.red / 65535.; rgba->green = pango_color.green / 65535.; rgba->blue = pango_color.blue / 65535.; - rgba->alpha = 1; + rgba->alpha = alpha / 65535.; } return TRUE; diff --git a/meson.build b/meson.build index ce711e9ba0..d193835a75 100644 --- a/meson.build +++ b/meson.build @@ -27,7 +27,7 @@ else endif glib_req = '>= @0@.@1@.@2@'.format(glib_major_req, glib_minor_req, glib_micro_req) -pango_req = '>= 1.45.0' +pango_req = '>= 1.45.5' fribidi_req = '>= 0.19.7' cairo_req = '>= 1.14.0' gdk_pixbuf_req = '>= 2.30.0' diff --git a/testsuite/gdk/rgba.c b/testsuite/gdk/rgba.c index db3fbd3111..26a94655e2 100644 --- a/testsuite/gdk/rgba.c +++ b/testsuite/gdk/rgba.c @@ -57,6 +57,14 @@ test_color_parse (void) res = gdk_rgba_parse (&color, "rgb(0,0,0)"); g_assert (res); g_assert (gdk_rgba_equal (&color, &expected)); + + expected.red = 0.0; + expected.green = 0x8080 / 65535.; + expected.blue = 1.0; + expected.alpha = 0x8888 / 65535.; + res = gdk_rgba_parse (&color, "#0080ff88"); + g_assert (res); + g_assert (gdk_rgba_equal (&color, &expected)); } static void