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;
+ }
}
}