]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktreeprivate.h
Updated galician translations
[~andy/gtk] / gtk / gtktreeprivate.h
index 53131f546aca34fb23d380e33c9b1af344dede94..2304f69ab7523e32ba7e9836d114a2f52afd30a9 100644 (file)
 #define __GTK_TREE_PRIVATE_H__
 
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
+
 
 #include <gtk/gtktreeview.h>
 #include <gtk/gtktreeselection.h>
 #include <gtk/gtkrbtree.h>
-  
+
 #define TREE_VIEW_DRAG_WIDTH 6
 
 typedef enum
@@ -58,7 +57,14 @@ enum
   DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT = 3,
   DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT = 4
 };
-  
+
+enum
+{
+  RUBBER_BAND_OFF = 0,
+  RUBBER_BAND_MAYBE_START = 1,
+  RUBBER_BAND_ACTIVE = 2
+};
+
 #define GTK_TREE_VIEW_SET_FLAG(tree_view, flag)   G_STMT_START{ (tree_view->priv->flags|=flag); }G_STMT_END
 #define GTK_TREE_VIEW_UNSET_FLAG(tree_view, flag) G_STMT_START{ (tree_view->priv->flags&=~(flag)); }G_STMT_END
 #define GTK_TREE_VIEW_FLAG_SET(tree_view, flag)   ((tree_view->priv->flags&flag)==flag)
@@ -71,9 +77,6 @@ enum
   */
 #define TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER(tree_view) (10*TREE_VIEW_HEADER_HEIGHT(tree_view))
 
-typedef void (*GtkTreeViewSearchDialogPositionFunc) (GtkTreeView *tree_view,
-                                                    GtkWidget   *search_dialog);
-
 typedef struct _GtkTreeViewColumnReorder GtkTreeViewColumnReorder;
 struct _GtkTreeViewColumnReorder
 {
@@ -91,60 +94,75 @@ struct _GtkTreeViewPrivate
   /* tree information */
   GtkRBTree *tree;
 
-  GtkRBNode *button_pressed_node;
-  GtkRBTree *button_pressed_tree;
-
+  /* Container info */
   GList *children;
   gint width;
   gint height;
-  gint expander_size;
 
+  /* Adjustments */
   GtkAdjustment *hadjustment;
   GtkAdjustment *vadjustment;
+  gint           min_display_width;
+  gint           min_display_height;
 
+  /* Sub windows */
   GdkWindow *bin_window;
   GdkWindow *header_window;
-  GdkWindow *drag_window;
-  GdkWindow *drag_highlight_window;
-  GtkTreeViewColumn *drag_column;
-
-  GtkTreeRowReference *last_button_press;
-  GtkTreeRowReference *last_button_press_2;
 
-  /* bin_window offset */
+  /* Scroll position state keeping */
   GtkTreeRowReference *top_row;
   gint top_row_dy;
   /* dy == y pos of top_row + top_row_dy */
   /* we cache it for simplicity of the code */
   gint dy;
-  gint drag_column_x;
 
-  GtkTreeViewColumn *expander_column;
-  GtkTreeViewColumn *edited_column;
   guint presize_handler_timer;
   guint validate_rows_timer;
   guint scroll_sync_timer;
 
-  /* Focus code */
-  GtkTreeViewColumn *focus_column;
+  /* Indentation and expander layout */
+  gint expander_size;
+  GtkTreeViewColumn *expander_column;
+
+  gint level_indentation;
+
+  /* Key navigation (focus), selection */
+  gint cursor_offset;
 
-  /* Selection stuff */
   GtkTreeRowReference *anchor;
   GtkTreeRowReference *cursor;
 
-  /* Column Resizing */
-  gint drag_pos;
-  gint x_drag;
+  GtkTreeViewColumn *focus_column;
+
+  /* Current pressed node, previously pressed, prelight */
+  GtkRBNode *button_pressed_node;
+  GtkRBTree *button_pressed_tree;
+
+  gint pressed_button;
+  gint press_start_x;
+  gint press_start_y;
+
+  gint event_last_x;
+  gint event_last_y;
+
+  guint last_button_time;
+  gint last_button_x;
+  gint last_button_y;
 
-  /* Prelight information */
   GtkRBNode *prelight_node;
   GtkRBTree *prelight_tree;
 
+  /* Cell Editing */
+  GtkTreeViewColumn *edited_column;
+
   /* The node that's currently being collapsed or expanded */
   GtkRBNode *expanded_collapsed_node;
   GtkRBTree *expanded_collapsed_tree;
   guint expand_collapse_timeout;
 
+  /* Auto expand/collapse timeout in hover mode */
+  guint auto_expand_timeout;
+
   /* Selection information */
   GtkTreeSelection *selection;
 
@@ -155,16 +173,35 @@ struct _GtkTreeViewPrivate
 
   GtkTreeViewColumnDropFunc column_drop_func;
   gpointer column_drop_func_data;
-  GtkDestroyNotify column_drop_func_data_destroy;
+  GDestroyNotify column_drop_func_data_destroy;
   GList *column_drag_info;
   GtkTreeViewColumnReorder *cur_reorder;
 
+  gint prev_width_before_expander;
+
+  /* Interactive Header reordering */
+  GdkWindow *drag_window;
+  GdkWindow *drag_highlight_window;
+  GtkTreeViewColumn *drag_column;
+  gint drag_column_x;
+
+  /* Interactive Header Resizing */
+  gint drag_pos;
+  gint x_drag;
+
+  /* Non-interactive Header Resizing, expand flag support */
+  gint prev_width;
+
+  gint last_extra_space;
+  gint last_extra_space_per_column;
+  gint last_number_of_expand_columns;
+
   /* ATK Hack */
   GtkTreeDestroyCountFunc destroy_count_func;
   gpointer destroy_count_data;
-  GtkDestroyNotify destroy_count_destroy;
+  GDestroyNotify destroy_count_destroy;
 
-  /* Scroll timeout (e.g. during dnd) */
+  /* Scroll timeout (e.g. during dnd, rubber banding) */
   guint scroll_timeout;
 
   /* Row drag-and-drop */
@@ -172,17 +209,63 @@ struct _GtkTreeViewPrivate
   GtkTreeViewDropPosition drag_dest_pos;
   guint open_dest_timeout;
 
-  gint pressed_button;
-  gint press_start_x;
-  gint press_start_y;
+  /* Rubber banding */
+  gint rubber_band_status;
+  gint rubber_band_x;
+  gint rubber_band_y;
+  gint rubber_band_shift;
+  gint rubber_band_ctrl;
+
+  GtkRBNode *rubber_band_start_node;
+  GtkRBTree *rubber_band_start_tree;
+
+  GtkRBNode *rubber_band_end_node;
+  GtkRBTree *rubber_band_end_tree;
+
+  /* fixed height */
+  gint fixed_height;
 
   /* Scroll-to functionality when unrealized */
   GtkTreeRowReference *scroll_to_path;
   GtkTreeViewColumn *scroll_to_column;
   gfloat scroll_to_row_align;
   gfloat scroll_to_col_align;
+
+  /* Interactive search */
+  gint selected_iter;
+  gint search_column;
+  GtkTreeViewSearchPositionFunc search_position_func;
+  GtkTreeViewSearchEqualFunc search_equal_func;
+  gpointer search_user_data;
+  GDestroyNotify search_destroy;
+  gpointer search_position_user_data;
+  GDestroyNotify search_position_destroy;
+  GtkWidget *search_window;
+  GtkWidget *search_entry;
+  gulong search_entry_changed_id;
+  guint typeselect_flush_timeout;
+
+  /* Grid and tree lines */
+  GtkTreeViewGridLines grid_lines;
+  double grid_line_dashes[2];
+  int grid_line_width;
+
+  gboolean tree_lines_enabled;
+  double tree_line_dashes[2];
+  int tree_line_width;
+
+  /* Row separators */
+  GtkTreeViewRowSeparatorFunc row_separator_func;
+  gpointer row_separator_data;
+  GDestroyNotify row_separator_destroy;
+
+  /* Tooltip support */
+  gint tooltip_column;
+
+  /* Here comes the bitfield */
   guint scroll_to_use_align : 1;
 
+  guint fixed_height_mode : 1;
   guint fixed_height_check : 1;
 
   guint reorderable : 1;
@@ -197,30 +280,33 @@ struct _GtkTreeViewPrivate
 
   guint ctrl_pressed : 1;
   guint shift_pressed : 1;
-  
+
+  guint init_hadjust_value : 1;
+
+  guint in_top_row_to_dy : 1;
+
   /* interactive search */
   guint enable_search : 1;
   guint disable_popdown : 1;
-  gint search_column;
-  GtkTreeViewSearchDialogPositionFunc search_dialog_position_func;
-  GtkTreeViewSearchEqualFunc search_equal_func;
-  gpointer search_user_data;
-  GtkDestroyNotify search_destroy;
-};
+  guint search_custom_entry_set : 1;
+  
+  guint hover_selection : 1;
+  guint hover_expand : 1;
+  guint imcontext_changed : 1;
 
-/* cool ABI compat hack */
-#define GTK_CELL_RENDERER_INFO_KEY "gtk-cell-renderer-info"
+  guint rubber_banding_enable : 1;
 
-typedef struct _GtkCellRendererInfo GtkCellRendererInfo;
-struct _GtkCellRendererInfo
-{
-  GdkColor cell_background;
+  guint in_grab : 1;
+
+  guint post_validation_flag : 1;
 
-  /* text renderer */
-  gulong focus_out_id;
+  /* Whether our key press handler is to avoid sending an unhandled binding to the search entry */
+  guint search_entry_avoid_unhandled_binding : 1;
 
-  /* toggle renderer */
-  guint inconsistent :1;
+  /* GtkScrollablePolicy needs to be checked when
+   * driving the scrollable adjustment values */
+  guint hscroll_policy : 1;
+  guint vscroll_policy : 1;
 };
 
 #ifdef __GNUC__
@@ -230,14 +316,13 @@ struct _GtkCellRendererInfo
        {                                                                \
          g_log (G_LOG_DOMAIN,                                           \
                 G_LOG_LEVEL_CRITICAL,                                   \
-               "file %s: line %d (%s): assertion `%s' failed.\n"       \
+               "%s (%s): assertion `%s' failed.\n"                     \
                "There is a disparity between the internal view of the GtkTreeView,\n"    \
                "and the GtkTreeModel.  This generally means that the model has changed\n"\
                "without letting the view know.  Any display from now on is likely to\n"  \
                "be incorrect.\n",                                                        \
-                __FILE__,                                               \
-                __LINE__,                                               \
-                __PRETTY_FUNCTION__,                                    \
+                G_STRLOC,                                               \
+                G_STRFUNC,                                              \
                 #expr);                                                 \
          return ret;                                                    \
        };                               }G_STMT_END
@@ -247,14 +332,13 @@ struct _GtkCellRendererInfo
        {                                                                \
          g_log (G_LOG_DOMAIN,                                           \
                 G_LOG_LEVEL_CRITICAL,                                   \
-               "file %s: line %d (%s): assertion `%s' failed.\n"       \
+               "%s (%s): assertion `%s' failed.\n"                     \
                "There is a disparity between the internal view of the GtkTreeView,\n"    \
                "and the GtkTreeModel.  This generally means that the model has changed\n"\
                "without letting the view know.  Any display from now on is likely to\n"  \
                "be incorrect.\n",                                                        \
-                __FILE__,                                               \
-                __LINE__,                                               \
-                __PRETTY_FUNCTION__,                                    \
+                G_STRLOC,                                               \
+                G_STRFUNC,                                              \
                 #expr);                                                 \
          return;                                                        \
        };                               }G_STMT_END
@@ -302,6 +386,7 @@ void         _gtk_tree_selection_internal_select_node (GtkTreeSelection  *select
                                                       GtkTreePath       *path,
                                                        GtkTreeSelectMode  mode,
                                                       gboolean           override_browse_mode);
+void         _gtk_tree_selection_emit_changed         (GtkTreeSelection  *selection);
 gboolean     _gtk_tree_view_find_node                 (GtkTreeView       *tree_view,
                                                       GtkTreePath       *path,
                                                       GtkRBTree        **tree,
@@ -318,7 +403,7 @@ void         _gtk_tree_view_child_move_resize         (GtkTreeView       *tree_v
 void         _gtk_tree_view_queue_draw_node           (GtkTreeView       *tree_view,
                                                       GtkRBTree         *tree,
                                                       GtkRBNode         *node,
-                                                      GdkRectangle      *clip_rect);
+                                                      const GdkRectangle *clip_rect);
 
 void _gtk_tree_view_column_realize_button   (GtkTreeViewColumn *column);
 void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column);
@@ -330,13 +415,14 @@ void _gtk_tree_view_column_unset_tree_view  (GtkTreeViewColumn *column);
 void _gtk_tree_view_column_set_width        (GtkTreeViewColumn *column,
                                             gint               width);
 void _gtk_tree_view_column_start_drag       (GtkTreeView       *tree_view,
-                                            GtkTreeViewColumn *column);
+                                            GtkTreeViewColumn *column,
+                                             GdkDevice         *device);
 gboolean _gtk_tree_view_column_cell_event   (GtkTreeViewColumn  *tree_column,
                                             GtkCellEditable   **editable_widget,
                                             GdkEvent           *event,
                                             gchar              *path_string,
-                                            GdkRectangle       *background_area,
-                                            GdkRectangle       *cell_area,
+                                            const GdkRectangle *background_area,
+                                            const GdkRectangle *cell_area,
                                             guint               flags);
 void _gtk_tree_view_column_start_editing (GtkTreeViewColumn *tree_column,
                                          GtkCellEditable   *editable_widget);
@@ -355,34 +441,37 @@ GtkTreeSelection* _gtk_tree_selection_new                (void);
 GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView      *tree_view);
 void              _gtk_tree_selection_set_tree_view      (GtkTreeSelection *selection,
                                                           GtkTreeView      *tree_view);
-
-void             _gtk_tree_view_column_cell_render      (GtkTreeViewColumn *tree_column,
-                                                         GdkWindow         *window,
-                                                         GdkRectangle      *background_area,
-                                                         GdkRectangle      *cell_area,
-                                                         GdkRectangle      *expose_area,
-                                                         guint              flags);
-gboolean         _gtk_tree_view_column_cell_focus       (GtkTreeViewColumn *tree_column,
-                                                         gint               direction,
-                                                         gboolean           left,
-                                                         gboolean           right);
-void             _gtk_tree_view_column_cell_draw_focus  (GtkTreeViewColumn *tree_column,
-                                                         GdkWindow         *window,
-                                                         GdkRectangle      *background_area,
-                                                         GdkRectangle      *cell_area,
-                                                         GdkRectangle      *expose_area,
-                                                         guint              flags);
-void             _gtk_tree_view_column_cell_set_dirty   (GtkTreeViewColumn *tree_column,
-                                                         gboolean           install_handler);
+gboolean          _gtk_tree_selection_row_is_selectable  (GtkTreeSelection *selection,
+                                                         GtkRBNode        *node,
+                                                         GtkTreePath      *path);
+
+void             _gtk_tree_view_column_cell_render      (GtkTreeViewColumn  *tree_column,
+                                                         cairo_t            *cr,
+                                                         const GdkRectangle *background_area,
+                                                         const GdkRectangle *cell_area,
+                                                         guint               flags);
+void             _gtk_tree_view_column_get_focus_area   (GtkTreeViewColumn  *tree_column,
+                                                         const GdkRectangle *background_area,
+                                                         const GdkRectangle *cell_area,
+                                                         GdkRectangle       *focus_area);
+gboolean         _gtk_tree_view_column_cell_focus       (GtkTreeViewColumn  *tree_column,
+                                                         gint                direction,
+                                                         gboolean            left,
+                                                         gboolean            right);
+void             _gtk_tree_view_column_cell_draw_focus  (GtkTreeViewColumn  *tree_column,
+                                                         cairo_t            *cr,
+                                                         const GdkRectangle *background_area,
+                                                         const GdkRectangle *cell_area,
+                                                         guint               flags);
+void             _gtk_tree_view_column_cell_set_dirty   (GtkTreeViewColumn  *tree_column,
+                                                         gboolean            install_handler);
 void              _gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column,
                                                            GtkCellRenderer   *cell,
                                                            gint              *left,
                                                            gint              *right);
 
 
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
 
 
 #endif /* __GTK_TREE_PRIVATE_H__ */