diff options
author | Benjamin Otte <otte@redhat.com> | 2011-12-28 22:59:55 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-01-09 18:37:50 +0100 |
commit | ba5e7012b1c4cec7f3cfcee662273d4b960e497d (patch) | |
tree | 1b7b5829f2b5711a7c1dd657fcc530c2122a8e6a /gtk/gtkstyleproviderprivate.c | |
parent | 38a9b28a0edfdf8fd6749815bfc3c8edf457e3ec (diff) | |
download | gtk+-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.c | 66 |
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); +} |