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; }
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); }
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)); }
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)); }