summaryrefslogtreecommitdiff
path: root/gtk/gtkstyleproviderprivate.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-12-28 22:59:55 +0100
committerBenjamin Otte <otte@redhat.com>2012-01-09 18:37:50 +0100
commitba5e7012b1c4cec7f3cfcee662273d4b960e497d (patch)
tree1b7b5829f2b5711a7c1dd657fcc530c2122a8e6a /gtk/gtkstyleproviderprivate.c
parent38a9b28a0edfdf8fd6749815bfc3c8edf457e3ec (diff)
downloadgtk+-ba5e7012b1c4cec7f3cfcee662273d4b960e497d.tar.gz
css: Redo StyleProvider interface
We now use the GtkStleProviderPrivate interface, which hopefully is faster and more conformant to CSS. Long term, it definitely should be both. I would have liked to split this up into multiple commits, but couldn't find a way.
Diffstat (limited to 'gtk/gtkstyleproviderprivate.c')
-rw-r--r--gtk/gtkstyleproviderprivate.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/gtk/gtkstyleproviderprivate.c b/gtk/gtkstyleproviderprivate.c
new file mode 100644
index 0000000000..a7b0a6fcb7
--- /dev/null
+++ b/gtk/gtkstyleproviderprivate.c
@@ -0,0 +1,66 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2011 Benjamin Otte <otte@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include "gtkstyleproviderprivate.h"
+#include "gtkstyleprovider.h"
+
+G_DEFINE_INTERFACE (GtkStyleProviderPrivate, _gtk_style_provider_private, GTK_TYPE_STYLE_PROVIDER)
+
+static void
+_gtk_style_provider_private_default_init (GtkStyleProviderPrivateInterface *iface)
+{
+}
+
+GtkSymbolicColor *
+_gtk_style_provider_private_get_color (GtkStyleProviderPrivate *provider,
+ const char *name)
+{
+ GtkStyleProviderPrivateInterface *iface;
+
+ g_return_val_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL);
+
+ iface = GTK_STYLE_PROVIDER_PRIVATE_GET_INTERFACE (provider);
+
+ if (!iface->get_color)
+ return NULL;
+
+ return iface->get_color (provider, name);
+}
+
+void
+_gtk_style_provider_private_lookup (GtkStyleProviderPrivate *provider,
+ GtkWidgetPath *path,
+ GtkStateFlags state,
+ GtkCssLookup *lookup)
+{
+ GtkStyleProviderPrivateInterface *iface;
+
+ g_return_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider));
+ g_return_if_fail (path != NULL);
+ g_return_if_fail (lookup != NULL);
+
+ iface = GTK_STYLE_PROVIDER_PRIVATE_GET_INTERFACE (provider);
+
+ if (!iface->lookup)
+ return;
+
+ iface->lookup (provider, path, state, lookup);
+}