X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTField.java;fp=src%2Fjexer%2FTField.java;h=785a276d2fc7531012b213a45fff05140bfda672;hb=24489803a611e99348e26cadedae1141f48c1a6c;hp=fbe726bc04ca2f1d68a38155569890a2780166e3;hpb=00fbfc382425d1f20a84cd8897919836cc6254ee;p=fanfix.git diff --git a/src/jexer/TField.java b/src/jexer/TField.java index fbe726b..785a276 100644 --- a/src/jexer/TField.java +++ b/src/jexer/TField.java @@ -218,7 +218,8 @@ public class TField extends TWidget { } /** - * Update the cursor position. + * Update the visible cursor position to match the location of position + * and windowStart. */ protected void updateCursor() { if ((position > getWidth()) && fixed) { @@ -230,6 +231,23 @@ public class TField extends TWidget { } } + /** + * Normalize windowStart such that most of the field data if visible. + */ + protected void normalizeWindowStart() { + if (fixed) { + // windowStart had better be zero, there is nothing to do here. + assert (windowStart == 0); + return; + } + windowStart = position - (getWidth() - 1); + if (windowStart < 0) { + windowStart = 0; + } + + updateCursor(); + } + /** * Handle mouse button presses. * @@ -268,6 +286,7 @@ public class TField extends TWidget { windowStart--; } } + normalizeWindowStart(); return; } @@ -322,6 +341,7 @@ public class TField extends TWidget { text = text.substring(0, position) + text.substring(position + 1); } + dispatch(false); return; } @@ -339,6 +359,7 @@ public class TField extends TWidget { } } dispatch(false); + normalizeWindowStart(); return; }