Speed up rendering of columns in sheet.
[pspp] / src / ui / gui / pspp-sheet-private.h
index 668efaeced60647838161c2c3fe7db6859f2d0ef..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,
@@ -157,6 +150,7 @@ struct _PsppSheetViewPrivate
 
   /* Cell Editing */
   PsppSheetViewColumn *edited_column;
+  gint edited_row;
 
   /* Selection information */
   PsppSheetSelection *selection;
@@ -215,6 +209,7 @@ struct _PsppSheetViewPrivate
 
   /* fixed height */
   gint fixed_height;
+  gboolean fixed_height_set;
 
   /* Scroll-to functionality when unrealized */
   GtkTreeRowReference *scroll_to_path;
@@ -238,7 +233,6 @@ struct _PsppSheetViewPrivate
 
   /* Grid and tree lines */
   PsppSheetViewGridLines grid_lines;
-  GdkGC *grid_line_gc;
 
   /* Special cells. */
   PsppSheetViewSpecialCells special_cells;
@@ -261,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;
@@ -283,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__
 
@@ -360,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,
@@ -415,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,
@@ -429,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,