public void HandleKeyboard(bool requireKeyboardFocus) { //if (Event.current.GetTypeForControl (m_KeyboardControlID) != EventType.keyDown) if (Event.current.type != EventType.keyDown) { return; } if (requireKeyboardFocus && (GUIUtility.keyboardControl != m_KeyboardControlID || !GUI.enabled)) { return; } if (HandleKeyEvent(Event.current)) { Event.current.Use(); return; } ResetMoveVerticallyTargetColumn(); var c = Event.current.character; if (!_font.HasCharacter(c) && c != '\t' && c != '\n') { Event.current.Use(); return; } if (HasSelection()) { DeleteSelection(); } _document.Insert(_document.CurrentLine.Start + Caret.Column, c.ToString(CultureInfo.InvariantCulture)); if (c == '\n') { Caret.SetPosition(Caret.Row + 1, 0); } else { Caret.MoveRight(); } Event.current.Use(); // On tab we auto cycle to next guicontrol here we ensure to grab it back if (c == '\t') { m_GrabKeyboardControl = true; } }
public void MoveRightWhenColumnIsNotLast() { GenericCaretTest(0, 1, () => _caret.MoveRight(), 0, 2); }