]> Pileus Git - ~andy/gtk/commitdiff
GtkStyleContext: Add gtk_style_context_set_background().
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 9 Nov 2010 20:24:41 +0000 (21:24 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:54 +0000 (15:38 +0100)
This function replaces gtk_style_set_background().

docs/reference/gtk/gtk3-sections.txt
gtk/gtkstylecontext.c
gtk/gtkstylecontext.h

index e99c91d8fdd1494defe9ad8d08624f7c59519118..6aad7608481b1018a97c4aca4e8aeada2d724c9a 100644 (file)
@@ -5419,6 +5419,7 @@ gtk_style_context_push_animatable_region
 gtk_style_context_remove_provider
 gtk_style_context_remove_provider_for_screen
 gtk_style_context_reset_widgets
+gtk_style_context_set_background
 gtk_style_context_restore
 gtk_style_context_save
 gtk_style_context_set_direction
index cadd28e6848777a272ad17139e4b852357d15d0b..75543228486ae4ffa430d8c0ddb8bd10468e386d 100644 (file)
@@ -2743,6 +2743,48 @@ gtk_style_context_invalidate (GtkStyleContext *context)
   priv->invalidating_context = FALSE;
 }
 
+/**
+ * gtk_style_context_set_background:
+ * @context: a #GtkStyleContext
+ * @window: a #GdkWindow
+ *
+ * Sets the background of @window to the background pattern or
+ * color specified in @context for its current state.
+ *
+ * Since: 3.0
+ **/
+void
+gtk_style_context_set_background (GtkStyleContext *context,
+                                  GdkWindow       *window)
+{
+  GtkStateFlags state;
+  cairo_pattern_t *pattern;
+  GdkRGBA *color;
+
+  g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
+  g_return_if_fail (GDK_IS_WINDOW (window));
+
+  state = gtk_style_context_get_state (context);
+  gtk_style_context_get (context, state,
+                         "background-image", &pattern,
+                         NULL);
+  if (pattern)
+    {
+      gdk_window_set_background_pattern (window, pattern);
+      cairo_pattern_destroy (pattern);
+      return;
+    }
+
+  gtk_style_context_get (context, state,
+                         "background-color", &color,
+                         NULL);
+  if (color)
+    {
+      gdk_window_set_background_rgba (window, color);
+      gdk_rgba_free (color);
+    }
+}
+
 /* Paint methods */
 
 /**
index 7b335da2ccae2b3800d7b4d008106404f1e5767a..cc83bad00b925ef1c7ee8f5e7b906248796e79a5 100644 (file)
@@ -362,6 +362,9 @@ void gtk_style_context_state_transition_stop   (GtkStyleContext *context,
 void gtk_style_context_invalidate (GtkStyleContext *context);
 void gtk_style_context_reset_widgets (GdkScreen *screen);
 
+void gtk_style_context_set_background (GtkStyleContext *context,
+                                       GdkWindow       *window);
+
 /* Paint methods */
 void gtk_render_check (GtkStyleContext *context,
                        cairo_t         *cr,