Beispiel #1
0
        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();
        }
Beispiel #2
0
        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;
            }
        }