void CodeCompletionCallback(IListItem selectedItem, int selectedIndex) { var item = selectedItem as CodeCompletionListItem; TextSpan curWord = _codeView.PreviousWordSpan(); int delta = item.Text.Length - curWord.Length; int newColumn = _codeView.Caret.Column + delta; _document.Delete(curWord.Start, curWord.Length); _document.Insert(curWord.Start, item.Text); _codeView.Caret.SetPosition(_codeView.Caret.Row, newColumn); _codeView.SetKeyboardFocus(); }
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; } }