add a little padding when scrolling up or down

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/BoxView.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/BoxView.java
index d118879..9d93b84 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/BoxView.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/BoxView.java
@@ -23,6 +23,8 @@
  */
 public class BoxView {
 
+	private final int SCROLL_PADDING = Cursor.CARET_BUFFER * 2;
+
 	private final IRenderer renderer;
 	private final IViewPort viewPort;
 	private final Cursor cursor;
@@ -144,6 +146,7 @@
 
 	private void moveViewPortToCursor(final Graphics graphics) {
 		final int delta = getDeltaIntoVisibleArea(viewPort.getVisibleArea());
+		System.out.println("DELTA:" + delta);
 		graphics.moveOrigin(0, -delta);
 		viewPort.moveRelative(delta);
 	}
@@ -151,7 +154,14 @@
 	private int getDeltaIntoVisibleArea(final Rectangle visibleArea) {
 		final int top = visibleArea.getY();
 		final int height = visibleArea.getHeight();
-		return cursor.getDeltaIntoVisibleArea(top, height);
+		final int delta = cursor.getDeltaIntoVisibleArea(top, height);
+		if (delta < 0) {
+			return delta - Math.min(SCROLL_PADDING, top + delta);
+		} else if (delta > 0) {
+			return delta + Math.min(SCROLL_PADDING, rootBox.getHeight() + Cursor.CARET_BUFFER - top - height - delta);
+		} else {
+			return delta;
+		}
 	}
 
 }