]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkiconview.c
Rename GdkQuartzWindow.h and .c to GdkQuartzNSWindow.h and .c
[~andy/gtk] / gtk / gtkiconview.c
index de282d04ac8d603b57c0b8c9da2c1d2883d96c83..e4da1a0939f41cf2930cc63b27689e7c499729ac 100644 (file)
@@ -272,8 +272,12 @@ static void             gtk_icon_view_style_set                 (GtkWidget
                                                                 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_get_preferred_width       (GtkWidget          *widget,
+                                                                gint               *minimum,
+                                                                gint               *natural);
+static void             gtk_icon_view_get_preferred_height      (GtkWidget          *widget,
+                                                                gint               *minimum,
+                                                                gint               *natural);
 static void             gtk_icon_view_size_allocate             (GtkWidget          *widget,
                                                                 GtkAllocation      *allocation);
 static gboolean         gtk_icon_view_draw                      (GtkWidget          *widget,
@@ -313,7 +317,7 @@ static void                 gtk_icon_view_set_hadjustment                (GtkIco
                                                                           GtkAdjustment          *adjustment);
 static void                 gtk_icon_view_set_vadjustment                (GtkIconView            *icon_view,
                                                                           GtkAdjustment          *adjustment);
-static void                 gtk_icon_view_accessible_set_adjustment      (GtkIconView            *icon_view,
+static void                 gtk_icon_view_accessible_set_adjustment      (AtkObject              *accessible,
                                                                           GtkOrientation          orientation,
                                                                           GtkAdjustment          *adjustment);
 static void                 gtk_icon_view_adjustment_changed             (GtkAdjustment          *adjustment,
@@ -531,7 +535,8 @@ gtk_icon_view_class_init (GtkIconViewClass *klass)
   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->get_preferred_width = gtk_icon_view_get_preferred_width;
+  widget_class->get_preferred_height = gtk_icon_view_get_preferred_height;
   widget_class->size_allocate = gtk_icon_view_size_allocate;
   widget_class->draw = gtk_icon_view_draw;
   widget_class->motion_notify_event = gtk_icon_view_motion;
@@ -1458,28 +1463,19 @@ gtk_icon_view_style_set (GtkWidget *widget,
 }
 
 static void
-gtk_icon_view_size_request (GtkWidget      *widget,
-                           GtkRequisition *requisition)
+gtk_icon_view_get_preferred_width (GtkWidget      *widget,
+                                  gint           *minimum,
+                                  gint           *natural)
 {
-  GtkIconView *icon_view = GTK_ICON_VIEW (widget);
-  GList *tmp_list;
-
-  requisition->width = icon_view->priv->width;
-  requisition->height = icon_view->priv->height;
-
-  tmp_list = icon_view->priv->children;
-
-  while (tmp_list)
-    {
-      GtkIconViewChild *child = tmp_list->data;
-      GtkRequisition child_requisition;
-
-      tmp_list = tmp_list->next;
+  *minimum = *natural = GTK_ICON_VIEW (widget)->priv->width;
+}
 
-      if (gtk_widget_get_visible (child->widget))
-        gtk_widget_get_preferred_size (child->widget,
-                                       &child_requisition, NULL);
-    }
+static void
+gtk_icon_view_get_preferred_height (GtkWidget      *widget,
+                                  gint           *minimum,
+                                  gint           *natural)
+{
+  *minimum = *natural = GTK_ICON_VIEW (widget)->priv->height;
 }
 
 static void
@@ -2711,6 +2707,7 @@ gtk_icon_view_set_hadjustment (GtkIconView   *icon_view,
                                GtkAdjustment *adjustment)
 {
   GtkIconViewPrivate *priv = icon_view->priv;
+  AtkObject *atk_obj;
 
   if (adjustment && priv->hadjustment == adjustment)
     return;
@@ -2732,9 +2729,10 @@ gtk_icon_view_set_hadjustment (GtkIconView   *icon_view,
   priv->hadjustment = g_object_ref_sink (adjustment);
   gtk_icon_view_set_hadjustment_values (icon_view);
 
-  gtk_icon_view_accessible_set_adjustment (icon_view,
+  atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
+  gtk_icon_view_accessible_set_adjustment (atk_obj,
                                            GTK_ORIENTATION_HORIZONTAL,
-                                           priv->hadjustment);
+                                           adjustment);
 
   g_object_notify (G_OBJECT (icon_view), "hadjustment");
 }
@@ -2744,6 +2742,7 @@ gtk_icon_view_set_vadjustment (GtkIconView   *icon_view,
                                GtkAdjustment *adjustment)
 {
   GtkIconViewPrivate *priv = icon_view->priv;
+  AtkObject *atk_obj;
 
   if (adjustment && priv->vadjustment == adjustment)
     return;
@@ -2765,9 +2764,10 @@ gtk_icon_view_set_vadjustment (GtkIconView   *icon_view,
   priv->vadjustment = g_object_ref_sink (adjustment);
   gtk_icon_view_set_vadjustment_values (icon_view);
 
-  gtk_icon_view_accessible_set_adjustment (icon_view,
+  atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
+  gtk_icon_view_accessible_set_adjustment (atk_obj,
                                            GTK_ORIENTATION_VERTICAL,
-                                           priv->vadjustment);
+                                           adjustment);
 
   g_object_notify (G_OBJECT (icon_view), "vadjustment");
 }
@@ -5231,6 +5231,9 @@ gtk_icon_view_set_tooltip_query_cb (GtkWidget  *widget,
  * When enabled, #GtkWidget::has-tooltip will be set to %TRUE and
  * @icon_view will connect a #GtkWidget::query-tooltip signal handler.
  *
+ * Note that the signal handler sets the text with gtk_tooltip_set_markup(),
+ * so &, <, etc have to be escaped in the text.
+ *
  * Since: 2.12
  */
 void
@@ -5615,7 +5618,7 @@ update_text_cell (GtkIconView *icon_view)
        g_object_set (info->cell,
                       "alignment", PANGO_ALIGN_CENTER,
                      "wrap-mode", PANGO_WRAP_WORD_CHAR,
-                     "xalign", 0.0,
+                     "xalign", 0.5,
                      "yalign", 0.0,
                      NULL);
       else
@@ -5623,7 +5626,7 @@ update_text_cell (GtkIconView *icon_view)
                       "alignment", PANGO_ALIGN_LEFT,
                      "wrap-mode", PANGO_WRAP_WORD_CHAR,
                      "xalign", 0.0,
-                     "yalign", 0.0,
+                     "yalign", 0.5,
                      NULL);
     }
 }
@@ -6701,7 +6704,7 @@ gtk_icon_view_autoscroll (GtkIconView *icon_view)
   window = gtk_widget_get_window (GTK_WIDGET (icon_view));
 
   gdk_window_get_pointer (window, &px, &py, NULL);
-  gdk_window_get_geometry (window, &x, &y, &width, &height, NULL);
+  gdk_window_get_geometry (window, &x, &y, &width, &height);
 
   /* see if we are near the edge. */
   voffset = py - (y + 2 * SCROLL_EDGE_SIZE);
@@ -6822,7 +6825,7 @@ out:
     {
       GtkWidget *source_widget;
 
-      *suggested_action = context->suggested_action;
+      *suggested_action = gdk_drag_context_get_suggested_action (context);
       source_widget = gtk_drag_get_source_widget (context);
 
       if (source_widget == widget)
@@ -6830,7 +6833,7 @@ out:
           /* Default to MOVE, unless the user has
            * pressed ctrl or shift to affect available actions
            */
-          if ((context->actions & GDK_ACTION_MOVE) != 0)
+          if ((gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0)
             *suggested_action = GDK_ACTION_MOVE;
         }
 
@@ -7034,7 +7037,7 @@ gtk_icon_view_drag_data_get (GtkWidget        *widget,
     goto done;
 
   /* If drag_data_get does nothing, try providing row data. */
-  if (selection_data->target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW"))
+  if (gtk_selection_data_get_target (selection_data) == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW"))
     gtk_tree_set_row_drag_data (selection_data,
                                model,
                                source_row);
@@ -7271,7 +7274,7 @@ gtk_icon_view_drag_data_received (GtkWidget        *widget,
   if (dest_row == NULL)
     return;
 
-  if (selection_data->length >= 0)
+  if (gtk_selection_data_get_length (selection_data) >= 0)
     {
       if (gtk_tree_drag_dest_drag_data_received (GTK_TREE_DRAG_DEST (model),
                                                  dest_row,
@@ -7281,7 +7284,7 @@ gtk_icon_view_drag_data_received (GtkWidget        *widget,
 
   gtk_drag_finish (context,
                    accepted,
-                   (context->action == GDK_ACTION_MOVE),
+                   (gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE),
                    time);
 
   gtk_tree_path_free (dest_row);
@@ -9208,32 +9211,21 @@ gtk_icon_view_accessible_traverse_items (GtkIconViewAccessible *view,
 }
 
 static void
-gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment,
-                                             GtkIconView   *icon_view)
+gtk_icon_view_accessible_adjustment_changed (GtkAdjustment         *adjustment,
+                                             GtkIconViewAccessible *view)
 {
-  AtkObject *obj;
-  GtkIconViewAccessible *view;
-
-  /*
-   * The scrollbars have changed
-   */
-  obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
-  view = GTK_ICON_VIEW_ACCESSIBLE (obj);
-
   gtk_icon_view_accessible_traverse_items (view, NULL);
 }
 
 static void
-gtk_icon_view_accessible_set_adjustment (GtkIconView    *icon_view,
+gtk_icon_view_accessible_set_adjustment (AtkObject      *accessible,
                                          GtkOrientation  orientation,
                                          GtkAdjustment  *adjustment)
 {
-  AtkObject *atk_obj;
   GtkIconViewAccessiblePrivate *priv;
   GtkAdjustment **old_adj_ptr;
 
-  atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
-  priv = gtk_icon_view_accessible_get_priv (atk_obj);
+  priv = gtk_icon_view_accessible_get_priv (accessible);
 
   /* Adjustments are set for the first time in constructor and priv is not
    * initialized at that time, so skip this first setting. */
@@ -9262,7 +9254,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView    *icon_view,
                                     (gpointer *)&priv->old_hadj);
       g_signal_handlers_disconnect_by_func (*old_adj_ptr,
                                             gtk_icon_view_accessible_adjustment_changed,
-                                            icon_view);
+                                            accessible);
     }
 
   /* Connect signal */
@@ -9270,7 +9262,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView    *icon_view,
   g_object_add_weak_pointer (G_OBJECT (adjustment), (gpointer *)old_adj_ptr);
   g_signal_connect (adjustment, "value-changed",
                     G_CALLBACK (gtk_icon_view_accessible_adjustment_changed),
-                    icon_view);
+                    accessible);
 }
 
 static void
@@ -9573,11 +9565,11 @@ gtk_icon_view_accessible_initialize (AtkObject *accessible,
 
   icon_view = GTK_ICON_VIEW (data);
   if (icon_view->priv->hadjustment)
-    gtk_icon_view_accessible_set_adjustment (icon_view,
+    gtk_icon_view_accessible_set_adjustment (accessible,
                                             GTK_ORIENTATION_HORIZONTAL,
                                             icon_view->priv->hadjustment);
   if (icon_view->priv->vadjustment)
-    gtk_icon_view_accessible_set_adjustment (icon_view,
+    gtk_icon_view_accessible_set_adjustment (accessible,
                                             GTK_ORIENTATION_VERTICAL,
                                             icon_view->priv->vadjustment);
   g_signal_connect (data,
@@ -9624,7 +9616,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget,
           
       g_signal_handlers_disconnect_by_func (priv->old_hadj,
                                             (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                            widget);
+                                            accessible);
       priv->old_hadj = NULL;
     }
   if (priv->old_vadj)
@@ -9634,7 +9626,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget,
           
       g_signal_handlers_disconnect_by_func (priv->old_vadj,
                                             (gpointer) gtk_icon_view_accessible_adjustment_changed,
-                                            widget);
+                                            accessible);
       priv->old_vadj = NULL;
     }
 }