Speed up rendering of columns in sheet.
[pspp] / src / ui / gui / pspp-sheet-private.h
index 80e15ccf13d91f8c276e5f638111aec4de46ef3a..a19c7c5b783bf60bef8916a8616be49a091e86c8 100644 (file)
@@ -1,5 +1,5 @@
  /* PSPPIRE - a graphical user interface for PSPP.
-    Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+    Copyright (C) 2011, 2012, 2013 Free Software Foundation, Inc.
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -53,13 +53,6 @@ typedef enum
   PSPP_SHEET_VIEW_IN_COLUMN_DRAG = 1 << 7
 } PsppSheetViewFlags;
 
-typedef enum
-{
-  GTK_TREE_SELECT_MODE_TOGGLE = 1 << 0,
-  GTK_TREE_SELECT_MODE_EXTEND = 1 << 1
-}
-GtkTreeSelectMode;
-
 enum
 {
   DRAG_COLUMN_WINDOW_STATE_UNSET = 0,
@@ -240,7 +233,6 @@ struct _PsppSheetViewPrivate
 
   /* Grid and tree lines */
   PsppSheetViewGridLines grid_lines;
-  GdkGC *grid_line_gc[5];
 
   /* Special cells. */
   PsppSheetViewSpecialCells special_cells;
@@ -263,9 +255,6 @@ struct _PsppSheetViewPrivate
   /* for DnD */
   guint empty_view_drop : 1;
 
-  guint ctrl_pressed : 1;
-  guint shift_pressed : 1;
-
   guint init_hadjust_value : 1;
 
   guint in_top_row_to_dy : 1;
@@ -285,8 +274,16 @@ struct _PsppSheetViewPrivate
   guint post_validation_flag : 1;
 
   /* Whether our key press handler is to avoid sending an unhandled binding to the search entry */
+
   guint search_entry_avoid_unhandled_binding : 1;
-};
+  /* GtkScrollablePolicy needs to be checked when
+   * driving the scrollable adjustment values */
+  guint hscroll_policy : 1;
+  guint vscroll_policy : 1;
+
+  /* For optimisation of size allocate requests */
+  guint resized : 1;
+ };
 
 #ifdef __GNUC__
 
@@ -362,7 +359,7 @@ struct _PsppSheetViewPrivate
 void         _pspp_sheet_selection_internal_select_node (PsppSheetSelection  *selection,
                                                       int                node,
                                                       GtkTreePath       *path,
-                                                       GtkTreeSelectMode  mode,
+                                                       PsppSheetSelectMode  mode,
                                                       gboolean           override_browse_mode);
 void         _pspp_sheet_selection_emit_changed         (PsppSheetSelection  *selection);
 void         _pspp_sheet_view_find_node                 (PsppSheetView       *tree_view,
@@ -417,10 +414,9 @@ void              _pspp_sheet_selection_set_tree_view      (PsppSheetSelection *
                                                           PsppSheetView      *tree_view);
 
 void             _pspp_sheet_view_column_cell_render      (PsppSheetViewColumn  *tree_column,
-                                                         GdkWindow          *window,
+                                                           cairo_t *cr,
                                                          const GdkRectangle *background_area,
                                                          const GdkRectangle *cell_area,
-                                                         const GdkRectangle *expose_area,
                                                          guint               flags);
 void             _pspp_sheet_view_column_get_focus_area   (PsppSheetViewColumn  *tree_column,
                                                          const GdkRectangle *background_area,
@@ -431,10 +427,9 @@ gboolean     _pspp_sheet_view_column_cell_focus       (PsppSheetViewColumn  *tree_
                                                          gboolean            left,
                                                          gboolean            right);
 void             _pspp_sheet_view_column_cell_draw_focus  (PsppSheetViewColumn  *tree_column,
-                                                         GdkWindow          *window,
+                                                           cairo_t *cr,
                                                          const GdkRectangle *background_area,
                                                          const GdkRectangle *cell_area,
-                                                         const GdkRectangle *expose_area,
                                                          guint               flags);
 void             _pspp_sheet_view_column_cell_set_dirty         (PsppSheetViewColumn  *tree_column);
 void              _pspp_sheet_view_column_get_neighbor_sizes (PsppSheetViewColumn *column,