]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktreeviewcolumn.c
Updated galician translations
[~andy/gtk] / gtk / gtktreeviewcolumn.c
index bd5b36e68e05a0c3a6304f1c146e300d67218b2d..161eb6d315532b54f451007ffb2751c77160d33f 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <string.h>
 
-#include "gtkcellsizerequest.h"
 #include "gtktreeview.h"
 #include "gtktreeprivate.h"
 #include "gtkcelllayout.h"
 #include "gtkintl.h"
 
 
+/**
+ * SECTION:gtktreeviewcolumn
+ * @Short_description: A visible column in a GtkTreeView widget
+ * @Title: GtkTreeViewColumn
+ * @See_also: #GtkTreeView, #GtkTreeSelection, #GtkTreeDnd, #GtkTreeMode, #GtkTreeSortable,
+ *   #GtkTreeModelSort, #GtkListStore, #GtkTreeStore, #GtkCellRenderer, #GtkCellEditable,
+ *   #GtkCellRendererPixbuf, #GtkCellRendererText, #GtkCellRendererToggle
+ *
+ * The GtkTreeViewColumn object represents a visible column in a #GtkTreeView widget.
+ * It allows to set properties of the column header, and functions as a holding pen for
+ * the cell renderers which determine how the data in the column is displayed.
+ *
+ * Please refer to the <link linkend="TreeWidget">tree widget conceptual overview</link>
+ * for an overview of all the objects and data types related to the tree widget and how
+ * they work together.
+ */
+
+
 enum
 {
   PROP_0,
@@ -161,7 +178,7 @@ static void gtk_tree_view_column_buildable_init                 (GtkBuildableIfa
 
 static guint tree_column_signals[LAST_SIGNAL] = { 0 };
 
-G_DEFINE_TYPE_WITH_CODE (GtkTreeViewColumn, gtk_tree_view_column, GTK_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GtkTreeViewColumn, gtk_tree_view_column, G_TYPE_INITIALLY_UNOWNED,
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT,
                                                gtk_tree_view_column_cell_layout_init)
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
@@ -1081,7 +1098,7 @@ gtk_tree_view_column_button_event (GtkWidget *widget,
       ((GdkEventButton *)event)->button == 1)
     {
       column->maybe_reordered = TRUE;
-      gdk_window_get_pointer (GTK_BUTTON (widget)->event_window,
+      gdk_window_get_pointer (gtk_button_get_event_window (GTK_BUTTON (widget)),
                              &column->drag_x,
                              &column->drag_y,
                              NULL);
@@ -1291,7 +1308,6 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
   attr.window_type = GDK_WINDOW_CHILD;
   attr.wclass = GDK_INPUT_ONLY;
   attr.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view));
-  attr.colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_view));
   attr.event_mask = gtk_widget_get_events (GTK_WIDGET (tree_view)) |
                     (GDK_BUTTON_PRESS_MASK |
                     GDK_BUTTON_RELEASE_MASK |
@@ -1299,7 +1315,7 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
                     GDK_POINTER_MOTION_HINT_MASK |
                     GDK_KEY_PRESS_MASK);
   attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y;
-  attr.cursor = gdk_cursor_new_for_display (gdk_drawable_get_display (tree_view->priv->header_window),
+  attr.cursor = gdk_cursor_new_for_display (gdk_window_get_display (tree_view->priv->header_window),
                                            GDK_SB_H_DOUBLE_ARROW);
   attr.y = 0;
   attr.width = TREE_VIEW_DRAG_WIDTH;
@@ -2268,11 +2284,12 @@ gtk_tree_view_column_set_widget (GtkTreeViewColumn *tree_column,
 /**
  * gtk_tree_view_column_get_widget:
  * @tree_column: A #GtkTreeViewColumn.
- * 
- * Returns the #GtkWidget in the button on the column header.  If a custom
- * widget has not been set then %NULL is returned.
- * 
- * Return value: The #GtkWidget in the column header, or %NULL
+ *
+ * Returns the #GtkWidget in the button on the column header.
+ * If a custom widget has not been set then %NULL is returned.
+ *
+ * Return value: (transfer none): The #GtkWidget in the column
+ *     header, or %NULL
  **/
 GtkWidget *
 gtk_tree_view_column_get_widget (GtkTreeViewColumn *tree_column)
@@ -2641,9 +2658,9 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn  *tree_column,
       if (first_cell == FALSE && width)
        *width += tree_column->spacing;
 
-      gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
-                                      GTK_WIDGET (tree_column->tree_view),
-                                      &min_size, NULL);
+      gtk_cell_renderer_get_preferred_size (info->cell,
+                                            GTK_WIDGET (tree_column->tree_view),
+                                            &min_size, NULL);
 
       if (height)
        * height = MAX (*height, min_size.height + focus_line_width * 2);
@@ -2669,12 +2686,11 @@ enum {
 
 static gboolean
 gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
-                                         GdkWindow          *window,
+                                         cairo_t            *cr,
                                          const GdkRectangle *background_area,
                                          const GdkRectangle *cell_area,
                                          guint               flags,
                                          gint                action,
-                                         const GdkRectangle *expose_area,     /* RENDER */
                                          GdkRectangle       *focus_rectangle, /* FOCUS  */
                                          GtkCellEditable   **editable_widget, /* EVENT  */
                                          GdkEvent           *event,           /* EVENT  */
@@ -2683,7 +2699,6 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
   GList *list;
   GdkRectangle real_cell_area;
   GdkRectangle real_background_area;
-  GdkRectangle real_expose_area = *cell_area;
   gint depth = 0;
   gint expand_cell_count = 0;
   gint full_requested_width = 0;
@@ -2828,12 +2843,11 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
       if (action == CELL_ACTION_RENDER)
        {
          gtk_cell_renderer_render (info->cell,
-                                   window,
-                                   tree_column->tree_view,
-                                   &rtl_background_area,
-                                   &rtl_cell_area,
-                                   &real_expose_area, 
-                                   flags);
+                                    cr,
+                                    tree_column->tree_view,
+                                    &rtl_background_area,
+                                    &rtl_cell_area,
+                                    flags);
        }
       /* FOCUS */
       else if (action == CELL_ACTION_FOCUS)
@@ -2841,9 +2855,9 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
           gint x_offset, y_offset;
           GtkRequisition min_size;
 
-          gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
-                                          tree_column->tree_view,
-                                          &min_size, NULL);
+          gtk_cell_renderer_get_preferred_size (info->cell,
+                                                tree_column->tree_view,
+                                                &min_size, NULL);
 
           _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
                                           gtk_widget_get_direction (tree_column->tree_view),
@@ -2997,12 +3011,11 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
       if (action == CELL_ACTION_RENDER)
        {
          gtk_cell_renderer_render (info->cell,
-                                   window,
-                                   tree_column->tree_view,
-                                   &rtl_background_area,
-                                   &rtl_cell_area,
-                                   &real_expose_area,
-                                   flags);
+                                    cr,
+                                    tree_column->tree_view,
+                                    &rtl_background_area,
+                                    &rtl_cell_area,
+                                    flags);
        }
       /* FOCUS */
       else if (action == CELL_ACTION_FOCUS)
@@ -3010,9 +3023,9 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
           gint x_offset, y_offset;
           GtkRequisition min_size;
 
-          gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
-                                          tree_column->tree_view,
-                                          &min_size, NULL);
+          gtk_cell_renderer_get_preferred_size (info->cell,
+                                                tree_column->tree_view,
+                                                &min_size, NULL);
 
           _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
                                           gtk_widget_get_direction (tree_column->tree_view),
@@ -3146,10 +3159,9 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
 /**
  * gtk_tree_view_column_cell_render:
  * @tree_column: A #GtkTreeViewColumn.
- * @window: a #GdkDrawable to draw to
+ * @cr: cairo context to draw to
  * @background_area: entire cell area (including tree expanders and maybe padding on the sides)
  * @cell_area: area normally rendered by a cell renderer
- * @expose_area: area that actually needs updating
  * @flags: flags that affect rendering
  * 
  * Renders the cell contained by #tree_column. This is used primarily by the
@@ -3157,25 +3169,27 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn  *tree_column,
  **/
 void
 _gtk_tree_view_column_cell_render (GtkTreeViewColumn  *tree_column,
-                                  GdkWindow          *window,
+                                  cairo_t            *cr,
                                   const GdkRectangle *background_area,
                                   const GdkRectangle *cell_area,
-                                  const GdkRectangle *expose_area,
                                   guint               flags)
 {
   g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
+  g_return_if_fail (cr != NULL);
   g_return_if_fail (background_area != NULL);
   g_return_if_fail (cell_area != NULL);
-  g_return_if_fail (expose_area != NULL);
+
+  cairo_save (cr);
 
   gtk_tree_view_column_cell_process_action (tree_column,
-                                           window,
+                                           cr,
                                            background_area,
                                            cell_area,
                                            flags,
                                            CELL_ACTION_RENDER,
-                                           expose_area,
                                            NULL, NULL, NULL, NULL);
+
+  cairo_restore (cr);
 }
 
 gboolean
@@ -3190,12 +3204,12 @@ _gtk_tree_view_column_cell_event (GtkTreeViewColumn  *tree_column,
   g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE);
 
   return gtk_tree_view_column_cell_process_action (tree_column,
-                                                  NULL,
+                                                   NULL,
                                                   background_area,
                                                   cell_area,
                                                   flags,
                                                   CELL_ACTION_EVENT,
-                                                  NULL, NULL,
+                                                  NULL,
                                                   editable_widget,
                                                   event,
                                                   path_string);
@@ -3213,7 +3227,6 @@ _gtk_tree_view_column_get_focus_area (GtkTreeViewColumn  *tree_column,
                                            cell_area,
                                            0,
                                            CELL_ACTION_FOCUS,
-                                           NULL,
                                            focus_area,
                                            NULL, NULL, NULL);
 }
@@ -3469,16 +3482,17 @@ _gtk_tree_view_column_cell_focus (GtkTreeViewColumn *tree_column,
 
 void
 _gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn  *tree_column,
-                                      GdkWindow          *window,
+                                      cairo_t            *cr,
                                       const GdkRectangle *background_area,
                                       const GdkRectangle *cell_area,
-                                      const GdkRectangle *expose_area,
                                       guint               flags)
 {
   gint focus_line_width;
   GtkStateType cell_state;
   
   g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
+  g_return_if_fail (cr != NULL);
+
   gtk_widget_style_get (GTK_WIDGET (tree_column->tree_view),
                        "focus-line-width", &focus_line_width, NULL);
   if (tree_column->editable_widget)
@@ -3502,12 +3516,11 @@ _gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn  *tree_column,
     {
       GdkRectangle focus_rectangle;
       gtk_tree_view_column_cell_process_action (tree_column,
-                                               window,
+                                               cr,
                                                background_area,
                                                cell_area,
                                                flags,
                                                CELL_ACTION_FOCUS,
-                                               expose_area,
                                                &focus_rectangle,
                                                NULL, NULL, NULL);
 
@@ -3515,15 +3528,14 @@ _gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn  *tree_column,
              (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT :
              (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL));
       gtk_paint_focus (gtk_widget_get_style (tree_column->tree_view),
-                      window,
-                      cell_state,
-                      cell_area,
-                      tree_column->tree_view,
-                      "treeview",
-                      focus_rectangle.x,
-                      focus_rectangle.y,
-                      focus_rectangle.width,
-                      focus_rectangle.height);
+                             cr,
+                             cell_state,
+                             tree_column->tree_view,
+                             "treeview",
+                             focus_rectangle.x,
+                             focus_rectangle.y,
+                             focus_rectangle.width,
+                             focus_rectangle.height);
     }
 }
 
@@ -3770,12 +3782,12 @@ gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column)
  * gtk_tree_view_column_get_tree_view:
  * @tree_column: A #GtkTreeViewColumn
  *
- * Returns the #GtkTreeView wherein @tree_column has been inserted.  If
- * @column is currently not inserted in any tree view, %NULL is
+ * Returns the #GtkTreeView wherein @tree_column has been inserted.
+ * If @column is currently not inserted in any tree view, %NULL is
  * returned.
  *
- * Return value: The tree view wherein @column has been inserted if any,
- *               %NULL otherwise.
+ * Return value: (transfer none): The tree view wherein @column has
+ *     been inserted if any, %NULL otherwise.
  *
  * Since: 2.12
  */