]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktreeview.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtktreeview.h
index 529739d2930d7079dbc5fc54637de49539bc8771..cdd94f03ebbb9a78ffb964f51dc2f046b7e4da01 100644 (file)
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
+
 #ifndef __GTK_TREE_VIEW_H__
 #define __GTK_TREE_VIEW_H__
 
-#include <gtk/gtkwidget.h>
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
 #include <gtk/gtkcontainer.h>
 #include <gtk/gtktreemodel.h>
 #include <gtk/gtktreeviewcolumn.h>
 #include <gtk/gtkdnd.h>
 #include <gtk/gtkentry.h>
 
-
 G_BEGIN_DECLS
 
-
+/**
+ * GtkTreeViewDropPosition:
+ * @GTK_TREE_VIEW_DROP_BEFORE: dropped row is inserted before
+ * @GTK_TREE_VIEW_DROP_AFTER: dropped row is inserted after
+ * @GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: dropped row becomes a child or is inserted before
+ * @GTK_TREE_VIEW_DROP_INTO_OR_AFTER: dropped row becomes a child or is inserted after
+ *
+ * An enum for determining where a dropped row goes.
+ */
 typedef enum
 {
   /* drop before/after this row */
@@ -59,6 +68,7 @@ struct _GtkTreeView
 {
   GtkContainer parent;
 
+  /*< private >*/
   GtkTreeViewPrivate *priv;
 };
 
@@ -66,9 +76,6 @@ struct _GtkTreeViewClass
 {
   GtkContainerClass parent_class;
 
-  void     (* set_scroll_adjustments)     (GtkTreeView       *tree_view,
-                                          GtkAdjustment     *hadjustment,
-                                          GtkAdjustment     *vadjustment);
   void     (* row_activated)              (GtkTreeView       *tree_view,
                                           GtkTreePath       *path,
                                           GtkTreeViewColumn *column);
@@ -104,27 +111,88 @@ struct _GtkTreeViewClass
   gboolean (* start_interactive_search)   (GtkTreeView       *tree_view);
 
   /* Padding for future expansion */
-  void (*_gtk_reserved0) (void);
   void (*_gtk_reserved1) (void);
   void (*_gtk_reserved2) (void);
   void (*_gtk_reserved3) (void);
   void (*_gtk_reserved4) (void);
+  void (*_gtk_reserved5) (void);
+  void (*_gtk_reserved6) (void);
+  void (*_gtk_reserved7) (void);
+  void (*_gtk_reserved8) (void);
 };
 
-
+/**
+ * GtkTreeViewColumnDropFunc:
+ * @tree_view: A #GtkTreeView
+ * @column: The #GtkTreeViewColumn being dragged
+ * @prev_column: A #GtkTreeViewColumn on one side of @column
+ * @next_column: A #GtkTreeViewColumn on the other side of @column
+ * @data: (closure): user data
+ *
+ * Function type for determining whether @column can be dropped in a
+ * particular spot (as determined by @prev_column and @next_column).  In
+ * left to right locales, @prev_column is on the left of the potential drop
+ * spot, and @next_column is on the right.  In right to left mode, this is
+ * reversed.  This function should return %TRUE if the spot is a valid drop
+ * spot.  Please note that returning %TRUE does not actually indicate that
+ * the column drop was made, but is meant only to indicate a possible drop
+ * spot to the user.
+ *
+ * Returns: %TRUE, if @column can be dropped in this spot
+ */
 typedef gboolean (* GtkTreeViewColumnDropFunc) (GtkTreeView             *tree_view,
                                                GtkTreeViewColumn       *column,
                                                GtkTreeViewColumn       *prev_column,
                                                GtkTreeViewColumn       *next_column,
                                                gpointer                 data);
+
+/**
+ * GtkTreeViewMappingFunc:
+ * @tree_view: A #GtkTreeView
+ * @path: The path that's expanded
+ * @user_data: user data
+ *
+ * Function used for gtk_tree_view_map_expanded_rows().
+ */
 typedef void     (* GtkTreeViewMappingFunc)    (GtkTreeView             *tree_view,
                                                GtkTreePath             *path,
                                                gpointer                 user_data);
+
+/**
+ * GtkTreeViewSearchEqualFunc:
+ * @model: the #GtkTreeModel being searched
+ * @column: the search column set by gtk_tree_view_set_search_column()
+ * @key: the key string to compare with
+ * @iter: a #GtkTreeIter pointing the row of @model that should be compared
+ *  with @key.
+ * @search_data: (closure): user data from gtk_tree_view_set_search_equal_func()
+ *
+ * A function used for checking whether a row in @model matches
+ * a search key string entered by the user. Note the return value
+ * is reversed from what you would normally expect, though it
+ * has some similarity to strcmp() returning 0 for equal strings.
+ *
+ * Returns: %FALSE if the row matches, %TRUE otherwise.
+ */
 typedef gboolean (*GtkTreeViewSearchEqualFunc) (GtkTreeModel            *model,
                                                gint                     column,
                                                const gchar             *key,
                                                GtkTreeIter             *iter,
                                                gpointer                 search_data);
+
+/**
+ * GtkTreeViewRowSeparatorFunc:
+ * @model: the #GtkTreeModel
+ * @iter: a #GtkTreeIter pointing at a row in @model
+ * @data: (closure): user data
+ *
+ * Function type for determining whether the row pointed to by @iter should
+ * be rendered as a separator. A common way to implement this is to have a
+ * boolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc
+ * returns.
+ *
+ * Returns: %TRUE if the row is a separator
+ */
 typedef gboolean (*GtkTreeViewRowSeparatorFunc) (GtkTreeModel      *model,
                                                 GtkTreeIter       *iter,
                                                 gpointer           data);
@@ -143,12 +211,19 @@ GtkTreeModel          *gtk_tree_view_get_model                     (GtkTreeView
 void                   gtk_tree_view_set_model                     (GtkTreeView               *tree_view,
                                                                    GtkTreeModel              *model);
 GtkTreeSelection      *gtk_tree_view_get_selection                 (GtkTreeView               *tree_view);
+
+GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_hadjustment)
 GtkAdjustment         *gtk_tree_view_get_hadjustment               (GtkTreeView               *tree_view);
+GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_hadjustment)
 void                   gtk_tree_view_set_hadjustment               (GtkTreeView               *tree_view,
                                                                    GtkAdjustment             *adjustment);
+GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_vadjustment)
 GtkAdjustment         *gtk_tree_view_get_vadjustment               (GtkTreeView               *tree_view);
+GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_vadjustment)
 void                   gtk_tree_view_set_vadjustment               (GtkTreeView               *tree_view,
                                                                    GtkAdjustment             *adjustment);
+
+
 gboolean               gtk_tree_view_get_headers_visible           (GtkTreeView               *tree_view);
 void                   gtk_tree_view_set_headers_visible           (GtkTreeView               *tree_view,
                                                                    gboolean                   headers_visible);
@@ -159,6 +234,11 @@ void                   gtk_tree_view_set_headers_clickable         (GtkTreeView
 void                   gtk_tree_view_set_rules_hint                (GtkTreeView               *tree_view,
                                                                    gboolean                   setting);
 gboolean               gtk_tree_view_get_rules_hint                (GtkTreeView               *tree_view);
+GDK_AVAILABLE_IN_3_8
+gboolean               gtk_tree_view_get_activate_on_single_click  (GtkTreeView               *tree_view);
+GDK_AVAILABLE_IN_3_8
+void                   gtk_tree_view_set_activate_on_single_click  (GtkTreeView               *tree_view,
+                                                                   gboolean                   single);
 
 /* Column funtions */
 gint                   gtk_tree_view_append_column                 (GtkTreeView               *tree_view,
@@ -180,6 +260,9 @@ gint                   gtk_tree_view_insert_column_with_data_func  (GtkTreeView
                                                                     GtkTreeCellDataFunc        func,
                                                                     gpointer                   data,
                                                                     GDestroyNotify             dnotify);
+
+GDK_AVAILABLE_IN_3_4
+guint                  gtk_tree_view_get_n_columns                 (GtkTreeView               *tree_view);
 GtkTreeViewColumn     *gtk_tree_view_get_column                    (GtkTreeView               *tree_view,
                                                                    gint                       n);
 GList                 *gtk_tree_view_get_columns                   (GtkTreeView               *tree_view);
@@ -192,7 +275,7 @@ GtkTreeViewColumn     *gtk_tree_view_get_expander_column           (GtkTreeView
 void                   gtk_tree_view_set_column_drag_function      (GtkTreeView               *tree_view,
                                                                    GtkTreeViewColumnDropFunc  func,
                                                                    gpointer                   user_data,
-                                                                   GtkDestroyNotify           destroy);
+                                                                   GDestroyNotify             destroy);
 
 /* Actions */
 void                   gtk_tree_view_scroll_to_point               (GtkTreeView               *tree_view,
@@ -257,19 +340,16 @@ void                   gtk_tree_view_get_background_area           (GtkTreeView
                                                                    GdkRectangle              *rect);
 void                   gtk_tree_view_get_visible_rect              (GtkTreeView               *tree_view,
                                                                    GdkRectangle              *visible_rect);
-void                   gtk_tree_view_widget_to_tree_coords         (GtkTreeView               *tree_view,
-                                                                   gint                       wx,
-                                                                   gint                       wy,
-                                                                   gint                      *tx,
-                                                                   gint                      *ty);
-void                   gtk_tree_view_tree_to_widget_coords         (GtkTreeView               *tree_view,
-                                                                   gint                       tx,
-                                                                   gint                       ty,
-                                                                   gint                      *wx,
-                                                                   gint                      *wy);
 gboolean               gtk_tree_view_get_visible_range             (GtkTreeView               *tree_view,
                                                                    GtkTreePath              **start_path,
                                                                    GtkTreePath              **end_path);
+gboolean               gtk_tree_view_is_blank_at_pos               (GtkTreeView               *tree_view,
+                                                                    gint                       x,
+                                                                    gint                       y,
+                                                                    GtkTreePath              **path,
+                                                                    GtkTreeViewColumn        **column,
+                                                                    gint                      *cell_x,
+                                                                    gint                      *cell_y);
 
 /* Drag-and-Drop support */
 void                   gtk_tree_view_enable_model_drag_source      (GtkTreeView               *tree_view,
@@ -297,7 +377,7 @@ gboolean               gtk_tree_view_get_dest_row_at_pos           (GtkTreeView
                                                                    gint                       drag_y,
                                                                    GtkTreePath              **path,
                                                                    GtkTreeViewDropPosition   *pos);
-GdkPixmap             *gtk_tree_view_create_row_drag_icon          (GtkTreeView               *tree_view,
+cairo_surface_t       *gtk_tree_view_create_row_drag_icon          (GtkTreeView               *tree_view,
                                                                    GtkTreePath               *path);
 
 /* Interactive search */
@@ -311,7 +391,7 @@ GtkTreeViewSearchEqualFunc gtk_tree_view_get_search_equal_func (GtkTreeView
 void                       gtk_tree_view_set_search_equal_func (GtkTreeView                *tree_view,
                                                                GtkTreeViewSearchEqualFunc  search_equal_func,
                                                                gpointer                    search_user_data,
-                                                               GtkDestroyNotify            search_destroy);
+                                                               GDestroyNotify              search_destroy);
 
 GtkEntry                     *gtk_tree_view_get_search_entry         (GtkTreeView                   *tree_view);
 void                          gtk_tree_view_set_search_entry         (GtkTreeView                   *tree_view,
@@ -322,16 +402,49 @@ void                          gtk_tree_view_set_search_position_func (GtkTreeVie
                                                                      gpointer                       data,
                                                                      GDestroyNotify                 destroy);
 
+/* Convert between the different coordinate systems */
+void gtk_tree_view_convert_widget_to_tree_coords       (GtkTreeView *tree_view,
+                                                       gint         wx,
+                                                       gint         wy,
+                                                       gint        *tx,
+                                                       gint        *ty);
+void gtk_tree_view_convert_tree_to_widget_coords       (GtkTreeView *tree_view,
+                                                       gint         tx,
+                                                       gint         ty,
+                                                       gint        *wx,
+                                                       gint        *wy);
+void gtk_tree_view_convert_widget_to_bin_window_coords (GtkTreeView *tree_view,
+                                                       gint         wx,
+                                                       gint         wy,
+                                                       gint        *bx,
+                                                       gint        *by);
+void gtk_tree_view_convert_bin_window_to_widget_coords (GtkTreeView *tree_view,
+                                                       gint         bx,
+                                                       gint         by,
+                                                       gint        *wx,
+                                                       gint        *wy);
+void gtk_tree_view_convert_tree_to_bin_window_coords   (GtkTreeView *tree_view,
+                                                       gint         tx,
+                                                       gint         ty,
+                                                       gint        *bx,
+                                                       gint        *by);
+void gtk_tree_view_convert_bin_window_to_tree_coords   (GtkTreeView *tree_view,
+                                                       gint         bx,
+                                                       gint         by,
+                                                       gint        *tx,
+                                                       gint        *ty);
+
 /* This function should really never be used.  It is just for use by ATK.
  */
 typedef void (* GtkTreeDestroyCountFunc)  (GtkTreeView             *tree_view,
                                           GtkTreePath             *path,
                                           gint                     children,
                                           gpointer                 user_data);
+GDK_DEPRECATED_IN_3_4
 void gtk_tree_view_set_destroy_count_func (GtkTreeView             *tree_view,
                                           GtkTreeDestroyCountFunc  func,
                                           gpointer                 data,
-                                          GtkDestroyNotify         destroy);
+                                          GDestroyNotify           destroy);
 
 void     gtk_tree_view_set_fixed_height_mode (GtkTreeView          *tree_view,
                                              gboolean              enable);
@@ -346,11 +459,13 @@ void     gtk_tree_view_set_rubber_banding    (GtkTreeView          *tree_view,
                                              gboolean              enable);
 gboolean gtk_tree_view_get_rubber_banding    (GtkTreeView          *tree_view);
 
+gboolean gtk_tree_view_is_rubber_banding_active (GtkTreeView       *tree_view);
+
 GtkTreeViewRowSeparatorFunc gtk_tree_view_get_row_separator_func (GtkTreeView               *tree_view);
 void                        gtk_tree_view_set_row_separator_func (GtkTreeView                *tree_view,
                                                                  GtkTreeViewRowSeparatorFunc func,
                                                                  gpointer                    data,
-                                                                 GtkDestroyNotify            destroy);
+                                                                 GDestroyNotify              destroy);
 
 GtkTreeViewGridLines        gtk_tree_view_get_grid_lines         (GtkTreeView                *tree_view);
 void                        gtk_tree_view_set_grid_lines         (GtkTreeView                *tree_view,
@@ -365,8 +480,27 @@ void                        gtk_tree_view_set_level_indentation  (GtkTreeView
                                                                  gint                        indentation);
 gint                        gtk_tree_view_get_level_indentation  (GtkTreeView                *tree_view);
 
+/* Convenience functions for setting tooltips */
+void          gtk_tree_view_set_tooltip_row    (GtkTreeView       *tree_view,
+                                               GtkTooltip        *tooltip,
+                                               GtkTreePath       *path);
+void          gtk_tree_view_set_tooltip_cell   (GtkTreeView       *tree_view,
+                                               GtkTooltip        *tooltip,
+                                               GtkTreePath       *path,
+                                               GtkTreeViewColumn *column,
+                                               GtkCellRenderer   *cell);
+gboolean      gtk_tree_view_get_tooltip_context(GtkTreeView       *tree_view,
+                                               gint              *x,
+                                               gint              *y,
+                                               gboolean           keyboard_tip,
+                                               GtkTreeModel     **model,
+                                               GtkTreePath      **path,
+                                               GtkTreeIter       *iter);
+void          gtk_tree_view_set_tooltip_column (GtkTreeView       *tree_view,
+                                               gint               column);
+gint          gtk_tree_view_get_tooltip_column (GtkTreeView       *tree_view);
+
 G_END_DECLS
 
 
 #endif /* __GTK_TREE_VIEW_H__ */
-