X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkstyleprovider.c;h=c1eb72ec144a99da42b027262e465f257c209a05;hb=6f1476edd3fbe31259e59ca3f03a01bf0f8ff67b;hp=606f4a130e1dcb78a697a865a783c9badb088825;hpb=7c5c4d86aefd6e39d7f23eaf4e107467300b9295;p=~andy%2Fgtk diff --git a/gtk/gtkstyleprovider.c b/gtk/gtkstyleprovider.c index 606f4a130..c1eb72ec1 100644 --- a/gtk/gtkstyleprovider.c +++ b/gtk/gtkstyleprovider.c @@ -12,18 +12,26 @@ * 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. + * License along with this library. If not, see . */ #include "config.h" -#include "gtkprivate.h" #include "gtkstyleprovider.h" + #include "gtkintl.h" +#include "gtkprivate.h" +#include "gtkwidgetpath.h" -#include "gtkalias.h" +/** + * SECTION:gtkstyleprovider + * @Short_description: Interface to provide style information to GtkStyleContext + * @Title: GtkStyleProvider + * @See_also: #GtkStyleContext, #GtkCssProvider + * + * GtkStyleProvider is an interface used to provide style information to a #GtkStyleContext. + * See gtk_style_context_add_provider() and gtk_style_context_add_provider_for_screen(). + */ static void gtk_style_provider_iface_init (gpointer g_iface); @@ -44,10 +52,25 @@ gtk_style_provider_get_type (void) static void gtk_style_provider_iface_init (gpointer g_iface) { - GType iface_type = G_TYPE_FROM_INTERFACE (g_iface); } -GtkStyleSet * +/** + * gtk_style_provider_get_style: + * @provider: a #GtkStyleProvider + * @path: #GtkWidgetPath to query + * + * Returns the style settings affecting a widget defined by @path, or %NULL if + * @provider doesn't contemplate styling @path. + * + * Returns: (transfer full): a #GtkStyleProperties containing the + * style settings affecting @path + * + * Since: 3.0 + * + * Deprecated: 3.8: Will always return %NULL for all GTK-provided style providers + * as the interface cannot correctly work the way CSS is specified. + **/ +GtkStyleProperties * gtk_style_provider_get_style (GtkStyleProvider *provider, GtkWidgetPath *path) { @@ -63,5 +86,71 @@ gtk_style_provider_get_style (GtkStyleProvider *provider, return iface->get_style (provider, path); } -#define __GTK_STYLE_PROVIDER_C__ -#include "gtkaliasdef.c" +/** + * gtk_style_provider_get_style_property: + * @provider: a #GtkStyleProvider + * @path: #GtkWidgetPath to query + * @state: state to query the style property for + * @pspec: The #GParamSpec to query + * @value: (out): return location for the property value + * + * Looks up a widget style property as defined by @provider for + * the widget represented by @path. + * + * Returns: %TRUE if the property was found and has a value, %FALSE otherwise + * + * Since: 3.0 + **/ +gboolean +gtk_style_provider_get_style_property (GtkStyleProvider *provider, + GtkWidgetPath *path, + GtkStateFlags state, + GParamSpec *pspec, + GValue *value) +{ + GtkStyleProviderIface *iface; + + g_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), FALSE); + g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE); + g_return_val_if_fail (path != NULL, FALSE); + g_return_val_if_fail (g_type_is_a (gtk_widget_path_get_object_type (path), pspec->owner_type), FALSE); + g_return_val_if_fail (value != NULL, FALSE); + + iface = GTK_STYLE_PROVIDER_GET_IFACE (provider); + + if (!iface->get_style_property) + return FALSE; + + return iface->get_style_property (provider, path, state, pspec, value); +} + +/** + * gtk_style_provider_get_icon_factory: + * @provider: a #GtkStyleProvider + * @path: #GtkWidgetPath to query + * + * Returns the #GtkIconFactory defined to be in use for @path, or %NULL if none + * is defined. + * + * Returns: (transfer none): The icon factory to use for @path, or %NULL + * + * Since: 3.0 + * + * Deprecated: 3.8: Will always return %NULL for all GTK-provided style providers. + **/ +GtkIconFactory * +gtk_style_provider_get_icon_factory (GtkStyleProvider *provider, + GtkWidgetPath *path) +{ + GtkStyleProviderIface *iface; + + g_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), NULL); + g_return_val_if_fail (path != NULL, NULL); + + iface = GTK_STYLE_PROVIDER_GET_IFACE (provider); + + if (!iface->get_icon_factory) + return NULL; + + return iface->get_icon_factory (provider, path); +}