pspp-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 03/17] pspp-sheet-view: Improve scrolling performance.


From: Ben Pfaff
Subject: [PATCH 03/17] pspp-sheet-view: Improve scrolling performance.
Date: Sun, 22 Apr 2012 11:12:21 -0700

Drawing dashed lines is very slow, at least on my computer.  This commit
changes them to solid, which makes scrolling in a large sheet feel much,
much more responsive on my system.
---
 src/ui/gui/pspp-sheet-view.c |   39 ++++-----------------------------------
 1 files changed, 4 insertions(+), 35 deletions(-)

diff --git a/src/ui/gui/pspp-sheet-view.c b/src/ui/gui/pspp-sheet-view.c
index b358466..0948ccb 100644
--- a/src/ui/gui/pspp-sheet-view.c
+++ b/src/ui/gui/pspp-sheet-view.c
@@ -187,10 +187,6 @@ static gboolean pspp_sheet_view_button_release       
(GtkWidget        *widget,
                                                    GdkEventButton   *event);
 static gboolean pspp_sheet_view_grab_broken          (GtkWidget          
*widget,
                                                    GdkEventGrabBroken *event);
-#if 0
-static gboolean pspp_sheet_view_configure            (GtkWidget         
*widget,
-                                                   GdkEventConfigure *event);
-#endif
 
 static void     pspp_sheet_view_set_focus_child      (GtkContainer     
*container,
                                                    GtkWidget        *child);
@@ -699,13 +695,6 @@ pspp_sheet_view_class_init (PsppSheetViewClass *class)
                                                             
GTK_PARAM_READABLE));
 
   gtk_widget_class_install_style_property (widget_class,
-                                          g_param_spec_string 
("grid-line-pattern",
-                                                               P_("Grid line 
pattern"),
-                                                               P_("Dash 
pattern used to draw the tree view grid lines"),
-                                                               "\1\1",
-                                                               
GTK_PARAM_READABLE));
-
-  gtk_widget_class_install_style_property (widget_class,
                                           g_param_spec_string 
("tree-line-pattern",
                                                                P_("Tree line 
pattern"),
                                                                P_("Dash 
pattern used to draw the tree view lines"),
@@ -2516,20 +2505,6 @@ pspp_sheet_view_grab_broken (GtkWidget          *widget,
   return TRUE;
 }
 
-#if 0
-static gboolean
-pspp_sheet_view_configure (GtkWidget *widget,
-                        GdkEventConfigure *event)
-{
-  PsppSheetView *tree_view;
-
-  tree_view = PSPP_SHEET_VIEW (widget);
-  tree_view->priv->search_position_func (tree_view, 
tree_view->priv->search_window);
-
-  return FALSE;
-}
-#endif
-
 /* GtkWidget::motion_event function set.
  */
 
@@ -3486,11 +3461,14 @@ pspp_sheet_view_draw_grid_lines (PsppSheetView    
*tree_view,
   GList *list = tree_view->priv->columns;
   gint i = 0;
   gint current_x = 0;
+  gint height;
 
   if (tree_view->priv->grid_lines != PSPP_SHEET_VIEW_GRID_LINES_VERTICAL
       && tree_view->priv->grid_lines != PSPP_SHEET_VIEW_GRID_LINES_BOTH)
     return;
 
+  gdk_drawable_get_size (event->window, NULL, &height);
+
   /* Only draw the lines for visible rows and columns */
   for (list = tree_view->priv->columns; list; list = list->next, i++)
     {
@@ -3508,7 +3486,7 @@ pspp_sheet_view_draw_grid_lines (PsppSheetView    
*tree_view,
       gdk_draw_line (event->window,
                     tree_view->priv->grid_line_gc,
                     current_x - 1, 0,
-                    current_x - 1, tree_view->priv->height);
+                    current_x - 1, height);
     }
 }
 
@@ -11881,22 +11859,13 @@ pspp_sheet_view_set_grid_lines (PsppSheetView         
  *tree_view,
          !priv->grid_line_gc)
        {
          gint line_width;
-         gint8 *dash_list;
 
          gtk_widget_style_get (widget,
                                "grid-line-width", &line_width,
-                               "grid-line-pattern", (gchar *)&dash_list,
                                NULL);
       
          priv->grid_line_gc = gdk_gc_new (widget->window);
          gdk_gc_copy (priv->grid_line_gc, widget->style->black_gc);
-         
-         gdk_gc_set_line_attributes (priv->grid_line_gc, line_width,
-                                     GDK_LINE_ON_OFF_DASH,
-                                     GDK_CAP_BUTT, GDK_JOIN_MITER);
-         gdk_gc_set_dashes (priv->grid_line_gc, 0, dash_list, 2);
-
-         g_free (dash_list);
        }      
     }
 
-- 
1.7.2.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]