[gtk+] csscolor: Allow using the name for a win32 color
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] csscolor: Allow using the name for a win32 color
- Date: Mon, 22 Feb 2016 03:39:47 +0000 (UTC)
commit 37a4e1cda971caf1fafa873815c0495a035ae987
Author: Benjamin Otte <otte redhat com>
Date: Sun Feb 21 23:40:04 2016 +0100
csscolor: Allow using the name for a win32 color
... instead of just the ID.
gtk/gtkcsscolorvalue.c | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkcsscolorvalue.c b/gtk/gtkcsscolorvalue.c
index b707946..a7b3e99 100644
--- a/gtk/gtkcsscolorvalue.c
+++ b/gtk/gtkcsscolorvalue.c
@@ -23,6 +23,7 @@
#include "gtkcssstylepropertyprivate.h"
#include "gtkhslaprivate.h"
#include "gtkstylepropertyprivate.h"
+#include "gtkwin32drawprivate.h"
#include "gtkwin32themeprivate.h"
#include "gtkprivate.h"
@@ -421,9 +422,15 @@ gtk_css_value_color_print (const GtkCssValue *value,
break;
case COLOR_TYPE_WIN32:
{
+ const char *name;
g_string_append (string, GTK_WIN32_THEME_SYMBOLIC_COLOR_NAME"(");
gtk_win32_theme_print (value->sym_col.win32.theme, string);
- g_string_append_printf (string, "%d)", value->sym_col.win32.id);
+ name = gtk_win32_get_sys_color_name_for_id (value->sym_col.win32.id);
+ if (name)
+ g_string_append (string, name);
+ else
+ g_string_append_printf (string, "%d", value->sym_col.win32.id);
+ g_string_append (string, ")");
}
break;
case COLOR_TYPE_CURRENT_COLOR:
@@ -588,6 +595,7 @@ gtk_css_color_parse_win32 (GtkCssParser *parser)
{
GtkCssValue *color;
GtkWin32Theme *theme;
+ char *name;
int id;
theme = gtk_win32_theme_parse (parser);
@@ -602,7 +610,19 @@ gtk_css_color_parse_win32 (GtkCssParser *parser)
return NULL;
}
- if (!_gtk_css_parser_try_int (parser, &id))
+ name = _gtk_css_parser_try_ident (parser, TRUE);
+ if (name)
+ {
+ id = gtk_win32_get_sys_color_id_for_name (name);
+ if (id == -1)
+ {
+ _gtk_css_parser_error (parser, "'%s' is not a win32 color name.", name);
+ g_free (name);
+ return NULL;
+ }
+ g_free (name);
+ }
+ else if (!_gtk_css_parser_try_int (parser, &id))
{
gtk_win32_theme_unref (theme);
_gtk_css_parser_error (parser, "Expected a valid integer value");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]