X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTField.java;h=785a276d2fc7531012b213a45fff05140bfda672;hb=24489803a611e99348e26cadedae1141f48c1a6c;hp=b25858476bb00fccfd2a9668aa1ba16e874c449e;hpb=e16dda65585466c8987bd1efd718431450a96605;p=fanfix.git diff --git a/src/jexer/TField.java b/src/jexer/TField.java index b258584..785a276 100644 --- a/src/jexer/TField.java +++ b/src/jexer/TField.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2016 Kevin Lamonte + * Copyright (C) 2017 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -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; }