Ejemplo n.º 1
0
        public TextPosition AdjustStep(TextPosition newPosition, CaretMoveDirection moveDirection) {
            var line = ((VisualTextLine)visuals[newPosition.Line]);
            var charInfo = line.RenderedText != string.Empty && newPosition.Column < GetLineLength(newPosition.Line) ? line.GetCharInfoAt(newPosition.Column) : null;

            if (charInfo != null) {
                return charInfo.IsCharacter ? newPosition : GetAdjustedPosition(charInfo, moveDirection);
            }

            return newPosition;
        }
Ejemplo n.º 2
0
        public TextPosition AdjustStep(TextPosition newPosition, CaretMoveDirection moveDirection)
        {
            var line     = ((VisualTextLine)visuals[newPosition.Line]);
            var charInfo = line.RenderedText != string.Empty && newPosition.Column < GetLineLength(newPosition.Line) ? line.GetCharInfoAt(newPosition.Column) : null;

            if (charInfo != null)
            {
                return(charInfo.IsCharacter ? newPosition : GetAdjustedPosition(charInfo, moveDirection));
            }

            return(newPosition);
        }
Ejemplo n.º 3
0
        private TextPosition GetAdjustedPosition(CharInfo charInfo, CaretMoveDirection moveDirection)
        {
            switch (moveDirection)
            {
            case CaretMoveDirection.LEFT:
                return(charInfo.PrevCharPosition);

            case CaretMoveDirection.RIGHT:
                return(charInfo.NextCharPosition);

            case CaretMoveDirection.BOTTOM:
            case CaretMoveDirection.TOP:
                return(charInfo.PrevCharPosition);
            }

            throw new ArgumentException(nameof(moveDirection));
        }
Ejemplo n.º 4
0
        private TextPosition GetAdjustedPosition(CharInfo charInfo, CaretMoveDirection moveDirection) {
            switch (moveDirection) {
                case CaretMoveDirection.LEFT:
                    return charInfo.PrevCharPosition;
                case CaretMoveDirection.RIGHT:
                    return charInfo.NextCharPosition;
                case CaretMoveDirection.BOTTOM:
                case CaretMoveDirection.TOP:
                    return charInfo.PrevCharPosition;
            }

            throw new ArgumentException(nameof(moveDirection));
        }