]> Pileus Git - ~andy/gtk/commitdiff
Update background upon style-set and state-changed. (#348634, Thomas
authorMatthias Clasen <mclasen@redhat.com>
Wed, 16 Aug 2006 20:42:15 +0000 (20:42 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 16 Aug 2006 20:42:15 +0000 (20:42 +0000)
2006-08-16  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkiconview.c: Update background upon style-set and
state-changed.  (#348634, Thomas Rydzynski)

ChangeLog
ChangeLog.pre-2-10
gtk/gtkiconview.c

index d34937d9a32587627bb221c528195b1350e2a9cb..145304e74e4705d21c0cea0bcb0a62f5b1fcd8cd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-08-16  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkiconview.c: Update background upon style-set and
+       state-changed.  (#348634, Thomas Rydzynski)
+
        * gtk/gtkentry.c (paste_received): Popup completion if paste
        is at the end (patch was already in 2.8.x).  (#165714, 
        Christian Persch)
index d34937d9a32587627bb221c528195b1350e2a9cb..145304e74e4705d21c0cea0bcb0a62f5b1fcd8cd 100644 (file)
@@ -1,5 +1,8 @@
 2006-08-16  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkiconview.c: Update background upon style-set and
+       state-changed.  (#348634, Thomas Rydzynski)
+
        * gtk/gtkentry.c (paste_received): Popup completion if paste
        is at the end (patch was already in 2.8.x).  (#165714, 
        Christian Persch)
index a19f10dcd4321d57bc5b06f30b6147ea74246385..c7d4661aaf023533048b4df055bdcebfa243e6f7 100644 (file)
@@ -239,6 +239,10 @@ static void             gtk_icon_view_destroy                   (GtkObject
 /* GtkWidget vfuncs */
 static void             gtk_icon_view_realize                   (GtkWidget          *widget);
 static void             gtk_icon_view_unrealize                 (GtkWidget          *widget);
+static void             gtk_icon_view_style_set                 (GtkWidget        *widget,
+                                                                GtkStyle         *previous_style);
+static void             gtk_icon_view_state_changed             (GtkWidget        *widget,
+                                                                GtkStateType      previous_state);
 static void             gtk_icon_view_size_request              (GtkWidget          *widget,
                                                                 GtkRequisition     *requisition);
 static void             gtk_icon_view_size_allocate             (GtkWidget          *widget,
@@ -468,6 +472,8 @@ gtk_icon_view_class_init (GtkIconViewClass *klass)
   
   widget_class->realize = gtk_icon_view_realize;
   widget_class->unrealize = gtk_icon_view_unrealize;
+  widget_class->style_set = gtk_icon_view_style_set;
+  widget_class->get_accessible = gtk_icon_view_get_accessible;
   widget_class->size_request = gtk_icon_view_size_request;
   widget_class->size_allocate = gtk_icon_view_size_allocate;
   widget_class->expose_event = gtk_icon_view_expose;
@@ -482,7 +488,7 @@ gtk_icon_view_class_init (GtkIconViewClass *klass)
   widget_class->drag_motion = gtk_icon_view_drag_motion;
   widget_class->drag_drop = gtk_icon_view_drag_drop;
   widget_class->drag_data_received = gtk_icon_view_drag_data_received;
-  widget_class->get_accessible = gtk_icon_view_get_accessible;
+  widget_class->state_changed = gtk_icon_view_state_changed;
 
   container_class->remove = gtk_icon_view_remove;
   container_class->forall = gtk_icon_view_forall;
@@ -1160,6 +1166,40 @@ gtk_icon_view_unrealize (GtkWidget *widget)
     (* GTK_WIDGET_CLASS (gtk_icon_view_parent_class)->unrealize) (widget);
 }
 
+static void
+gtk_icon_view_state_changed (GtkWidget      *widget,
+                            GtkStateType    previous_state)
+{
+  GtkIconView *icon_view = GTK_ICON_VIEW (widget);
+
+  if (GTK_WIDGET_REALIZED (widget))
+    {
+      gdk_window_set_background (widget->window, &widget->style->base[widget->state]);
+      gdk_window_set_background (icon_view->priv->bin_window, &widget->style->base[widget->state]);
+    }
+
+  gtk_widget_queue_draw (widget);
+}
+
+static void
+gtk_icon_view_style_set (GtkWidget *widget,
+                        GtkStyle *previous_style)
+{
+  GtkIconView *icon_view;
+
+  g_return_if_fail (GTK_IS_ICON_VIEW (widget));
+
+  icon_view = GTK_ICON_VIEW (widget);
+
+  if (GTK_WIDGET_REALIZED (widget))
+    {
+      gdk_window_set_background (widget->window, &widget->style->base[widget->state]);
+      gdk_window_set_background (icon_view->priv->bin_window, &widget->style->base[widget->state]);
+    }
+
+  gtk_widget_queue_resize (widget);
+}
+
 static void
 gtk_icon_view_size_request (GtkWidget      *widget,
                            GtkRequisition *requisition)