]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkiconview.c
filechooserbutton: whitespace fixes
[~andy/gtk] / gtk / gtkiconview.c
index 19d4f66c050fcd849853c3bcb2954e95df6092e0..0c6dc038ce354701c740569e7f2b9e35d77f2ef9 100644 (file)
@@ -132,6 +132,9 @@ static void             gtk_icon_view_get_property              (GObject
 static void             gtk_icon_view_destroy                   (GtkWidget          *widget);
 static void             gtk_icon_view_realize                   (GtkWidget          *widget);
 static void             gtk_icon_view_unrealize                 (GtkWidget          *widget);
+static void             gtk_icon_view_style_updated             (GtkWidget          *widget);
+static void             gtk_icon_view_state_flags_changed       (GtkWidget          *widget,
+                                                                GtkStateFlags       previous_state);
 static GtkSizeRequestMode gtk_icon_view_get_request_mode        (GtkWidget          *widget);
 static void             gtk_icon_view_get_preferred_width       (GtkWidget          *widget,
                                                                 gint               *minimum,
@@ -348,6 +351,7 @@ gtk_icon_view_class_init (GtkIconViewClass *klass)
   widget_class->destroy = gtk_icon_view_destroy;
   widget_class->realize = gtk_icon_view_realize;
   widget_class->unrealize = gtk_icon_view_unrealize;
+  widget_class->style_updated = gtk_icon_view_style_updated;
   widget_class->get_request_mode = gtk_icon_view_get_request_mode;
   widget_class->get_preferred_width = gtk_icon_view_get_preferred_width;
   widget_class->get_preferred_height = gtk_icon_view_get_preferred_height;
@@ -368,6 +372,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->state_flags_changed = gtk_icon_view_state_flags_changed;
 
   container_class->remove = gtk_icon_view_remove;
   container_class->forall = gtk_icon_view_forall;
@@ -1275,6 +1280,7 @@ gtk_icon_view_realize (GtkWidget *widget)
   GdkWindow *window;
   GdkWindowAttr attributes;
   gint attributes_mask;
+  GtkStyleContext *context;
 
   gtk_widget_set_realized (widget, TRUE);
 
@@ -1295,7 +1301,7 @@ gtk_icon_view_realize (GtkWidget *widget)
   window = gdk_window_new (gtk_widget_get_parent_window (widget),
                            &attributes, attributes_mask);
   gtk_widget_set_window (widget, window);
-  gdk_window_set_user_data (window, widget);
+  gtk_widget_register_window (widget, window);
 
   gtk_widget_get_allocation (widget, &allocation);
 
@@ -1316,7 +1322,12 @@ gtk_icon_view_realize (GtkWidget *widget)
   
   icon_view->priv->bin_window = gdk_window_new (window,
                                                &attributes, attributes_mask);
-  gdk_window_set_user_data (icon_view->priv->bin_window, widget);
+  gtk_widget_register_window (widget, icon_view->priv->bin_window);
+
+  context = gtk_widget_get_style_context (widget);
+  gtk_style_context_set_background (context, icon_view->priv->bin_window);
+  gtk_style_context_set_background (context, window);
+
   gdk_window_show (icon_view->priv->bin_window);
 }
 
@@ -1327,13 +1338,45 @@ gtk_icon_view_unrealize (GtkWidget *widget)
 
   icon_view = GTK_ICON_VIEW (widget);
 
-  gdk_window_set_user_data (icon_view->priv->bin_window, NULL);
+  gtk_widget_unregister_window (widget, icon_view->priv->bin_window);
   gdk_window_destroy (icon_view->priv->bin_window);
   icon_view->priv->bin_window = NULL;
 
   GTK_WIDGET_CLASS (gtk_icon_view_parent_class)->unrealize (widget);
 }
 
+static void
+_gtk_icon_view_update_background (GtkIconView *icon_view)
+{
+  GtkWidget *widget = GTK_WIDGET (icon_view);
+
+  if (gtk_widget_get_realized (widget))
+    {
+      GtkStyleContext *context;
+
+      context = gtk_widget_get_style_context (widget);
+      gtk_style_context_set_background (context, gtk_widget_get_window (widget));
+      gtk_style_context_set_background (context, icon_view->priv->bin_window);
+    }
+}
+
+static void
+gtk_icon_view_state_flags_changed (GtkWidget     *widget,
+                                   GtkStateFlags  previous_state)
+{
+  _gtk_icon_view_update_background (GTK_ICON_VIEW (widget));
+  gtk_widget_queue_draw (widget);
+}
+
+static void
+gtk_icon_view_style_updated (GtkWidget *widget)
+{
+  GTK_WIDGET_CLASS (gtk_icon_view_parent_class)->style_updated (widget);
+
+  _gtk_icon_view_update_background (GTK_ICON_VIEW (widget));
+  gtk_widget_queue_resize (widget);
+}
+
 static gint
 gtk_icon_view_get_n_items (GtkIconView *icon_view)
 {
@@ -7193,25 +7236,25 @@ gtk_icon_view_set_reorderable (GtkIconView *icon_view,
 /**
  * gtk_icon_view_set_activate_on_single_click:
  * @icon_view: a #GtkIconView
- * @setting: %TRUE to emit item-activated on a single click
+ * @single: %TRUE to emit item-activated on a single click
  *
- * Causes the "item-activated" signal to be emitted on a single click
- * instead of a double click.
+ * Causes the #GtkIconView::item-activated signal to be emitted on
+ * a single click instead of a double click.
  *
  * Since: 3.8
  **/
 void
-gtk_icon_view_set_activate_on_single_click  (GtkIconView *icon_view,
-                                             gboolean     setting)
+gtk_icon_view_set_activate_on_single_click (GtkIconView *icon_view,
+                                            gboolean     single)
 {
   g_return_if_fail (GTK_IS_ICON_VIEW (icon_view));
 
-  setting = setting != FALSE;
+  single = single != FALSE;
 
-  if (icon_view->priv->activate_on_single_click == setting)
+  if (icon_view->priv->activate_on_single_click == single)
     return;
 
-  icon_view->priv->activate_on_single_click = setting;
+  icon_view->priv->activate_on_single_click = single;
   g_object_notify (G_OBJECT (icon_view), "activate-on-single-click");
 }
 
@@ -7226,7 +7269,7 @@ gtk_icon_view_set_activate_on_single_click  (GtkIconView *icon_view,
  * Since: 3.8
  **/
 gboolean
-gtk_icon_view_get_activate_on_single_click  (GtkIconView *icon_view)
+gtk_icon_view_get_activate_on_single_click (GtkIconView *icon_view)
 {
   g_return_val_if_fail (GTK_IS_ICON_VIEW (icon_view), FALSE);