gdk_draw_line() draws lines by passing the coordinates to XDrawLine(),
which in turn casts the coordinates to "signed int" as it formats them for
the X Protocol.  Thus, large coordinate values wrap around and cause odd
visual artifacts.

This fixes the problem by only calling gdk_draw_line() with coordinate
values that should actually be visible.
---
 src/ui/gui/pspp-sheet-view.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/ui/gui/pspp-sheet-view.c b/src/ui/gui/pspp-sheet-view.c
index 0948ccb..5c2250a 100644
--- a/src/ui/gui/pspp-sheet-view.c
+++ b/src/ui/gui/pspp-sheet-view.c
@@ -3483,10 +3483,12 @@ pspp_sheet_view_draw_grid_lines (PsppSheetView    
*tree_view,
 
       current_x += column->width;
 
-      gdk_draw_line (event->window,
-                    tree_view->priv->grid_line_gc,
-                    current_x - 1, 0,
-                    current_x - 1, height);
+      if (current_x - 1 >= event->area.x
+          && current_x - 1 < event->area.x + event->area.width)
+        gdk_draw_line (event->window,
+                       tree_view->priv->grid_line_gc,
+                       current_x - 1, 0,
+                       current_x - 1, height);
     }
 }
 
-- 
1.7.2.5


_______________________________________________
pspp-dev mailing list
pspp-dev@gnu.org
https://lists.gnu.org/mailman/listinfo/pspp-dev

Reply via email to