浏览代码

Made CursorLeft/CursorRight change focus when cursor position is at start/end of a TextView (#1271)

Thomas Nind 4 年之前
父节点
当前提交
71e719fb2b
共有 1 个文件被更改,包括 19 次插入0 次删除
  1. 19 0
      Terminal.Gui/Views/TextView.cs

+ 19 - 0
Terminal.Gui/Views/TextView.cs

@@ -1944,6 +1944,25 @@ namespace Terminal.Gui {
 			int restCount;
 			int restCount;
 			List<Rune> rest;
 			List<Rune> 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
 			// Handle some state here - whether the last command was a kill
 			// operation and the column tracking (up/down)
 			// operation and the column tracking (up/down)
 			switch (kb.Key) {
 			switch (kb.Key) {