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
[email protected]
https://lists.gnu.org/mailman/listinfo/pspp-dev