diff --git a/Terminal.Gui/Views/TextView.cs b/Terminal.Gui/Views/TextView.cs index 48a2be04d8..9717ad1931 100644 --- a/Terminal.Gui/Views/TextView.cs +++ b/Terminal.Gui/Views/TextView.cs @@ -1944,6 +1944,25 @@ public override bool ProcessKey (KeyEvent kb) int restCount; List rest; + // if the user presses Left (without any control keys) and they are at the start of the text + if(kb.Key == Key.CursorLeft && currentColumn == 0 && currentRow == 0) { + // do not respond (this lets the key press fall through to navigation system - which usually changes focus backward) + return false; + } + + // if the user presses Right (without any control keys) + if (kb.Key == Key.CursorRight) { + + // determine where the last cursor position in the text is + var lastRow = model.Count - 1; + var lastCol = model.GetLine (lastRow).Count; + + // if they are at the very end of all the text do not respond (this lets the key press fall through to navigation system - which usually changes focus forward) + if (currentColumn == lastCol && currentRow == lastRow) { + return false; + } + } + // Handle some state here - whether the last command was a kill // operation and the column tracking (up/down) switch (kb.Key) {