From d0f681e898d0ddb6a34776ea11c42be5cac63097 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 19 Oct 2010 18:42:00 +0200 Subject: [PATCH] GtkStyleContext: Add gtk_style_context_new(). --- docs/reference/gtk/gtk3-sections.txt | 1 + gtk/gtkstylecontext.c | 23 ++++++++++++++++++ gtk/gtkstylecontext.h | 35 +++++++++++++++++++++------- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index ffc77f6194..d854ff5b50 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -5366,6 +5366,7 @@ gtk_style_set_get_type gtkstylecontext GtkStyleContext GtkStyleContext +gtk_style_context_new gtk_style_context_add_provider gtk_style_context_add_provider_for_screen gtk_style_context_get diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index b571d86f7c..f0456a4d4c 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -984,6 +984,29 @@ style_provider_remove (GList **list, return FALSE; } +/** + * gtk_style_context_new: + * + * Creates a standalone #GtkStyleContext, this style context + * won't be attached to any widget nor screen, so you may want + * to call gtk_style_context_set_path() and + * gtk_style_context_set_screen() yourself. + * + * + * This function is only useful when using the theming layer + * separated from GTK+, if you are using #GtkStyleContext to + * theme #GtkWidgets, use gtk_widget_get_style_context() + * in order to get a style context ready to theme the widget. + * + * + * Returns: A newly created #GtkStyleContext. + **/ +GtkStyleContext * +gtk_style_context_new (void) +{ + return g_object_new (GTK_TYPE_STYLE_CONTEXT, NULL); +} + /** * gtk_style_context_add_provider: * @context: a #GtkStyleContext diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h index ad1a2ffeb0..ce5fc0d06b 100644 --- a/gtk/gtkstylecontext.h +++ b/gtk/gtkstylecontext.h @@ -33,16 +33,16 @@ G_BEGIN_DECLS #define GTK_IS_STYLE_CONTEXT_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GTK_TYPE_STYLE_CONTEXT)) #define GTK_STYLE_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_STYLE_CONTEXT, GtkStyleContextClass)) -typedef struct _GtkStyleContext GtkStyleContext; -typedef struct _GtkStyleContextClass GtkStyleContextClass; +typedef struct GtkStyleContext GtkStyleContext; +typedef struct GtkStyleContextClass GtkStyleContextClass; -struct _GtkStyleContext +struct GtkStyleContext { GObject parent_object; gpointer priv; }; -struct _GtkStyleContextClass +struct GtkStyleContextClass { GObjectClass parent_class; @@ -51,6 +51,8 @@ struct _GtkStyleContextClass GType gtk_style_context_get_type (void) G_GNUC_CONST; +GtkStyleContext * gtk_style_context_new (void); + void gtk_style_context_add_provider_for_screen (GdkScreen *screen, GtkStyleProvider *provider, guint priority); @@ -82,9 +84,9 @@ void gtk_style_context_set_state (GtkStyleContext *context, GtkStateFlags flags); GtkStateFlags gtk_style_context_get_state (GtkStyleContext *context); -gboolean gtk_style_context_state_is_running (GtkStyleContext *context, - GtkStateType state, - gdouble *progress); +gboolean gtk_style_context_is_state_set (GtkStyleContext *context, + GtkStateType state, + gdouble *progress); void gtk_style_context_set_path (GtkStyleContext *context, GtkWidgetPath *path); @@ -146,8 +148,6 @@ void gtk_style_context_push_animatable_region (GtkStyleContext *context, gpointer region_id); void gtk_style_context_pop_animatable_region (GtkStyleContext *context); -void gtk_style_context_invalidate (GtkStyleContext *context); -void gtk_style_context_reset_widgets (GdkScreen *screen); /* Semi-private API */ const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context, @@ -158,6 +158,23 @@ void _gtk_style_context_coalesce_animation_areas (GtkStyleContext *c gint rel_x, gint rel_y); +/* Animation for state changes */ +void gtk_style_context_state_transition_start (GtkStyleContext *context, + gpointer identifier, + GtkWidget *widget, + GtkStateType state, + gboolean value, + GdkRectangle *rect); +void gtk_style_context_state_transition_update (GtkStyleContext *context, + gpointer identifier, + GdkRectangle *rect, + GtkStateType state); +void gtk_style_context_state_transition_stop (GtkStyleContext *context, + gpointer identifier); + +void gtk_style_context_invalidate (GtkStyleContext *context); +void gtk_style_context_reset_widgets (GdkScreen *screen); + /* Paint methods */ void gtk_render_check (GtkStyleContext *context, cairo_t *cr,