private void DrawCursor(string newText) { KeyboardTextEditor keyboardTextEditor = this.editor as KeyboardTextEditor; if (keyboardTextEditor != null) { keyboardTextEditor.PreDrawCursor(newText); int cursorIndex = keyboardTextEditor.cursorIndex; int selectIndex = keyboardTextEditor.selectIndex; Rect localPosition = keyboardTextEditor.localPosition; Vector2 scrollOffset = keyboardTextEditor.scrollOffset; Vector2 contentOffset = this.style.contentOffset; this.style.contentOffset -= scrollOffset; this.style.Internal_clipOffset = scrollOffset; Input.compositionCursorPos = keyboardTextEditor.graphicalCursorPos - scrollOffset + new Vector2(localPosition.x, localPosition.y + this.style.lineHeight); GUIContent content = new GUIContent(keyboardTextEditor.text); if (!string.IsNullOrEmpty(Input.compositionString)) { this.style.DrawWithTextSelection(base.position, content, this.HasCapture(), this.hasFocus, cursorIndex, cursorIndex + Input.compositionString.Length, true); } else { this.style.DrawWithTextSelection(base.position, content, this.HasCapture(), this.hasFocus, cursorIndex, selectIndex, false); } if (keyboardTextEditor.altCursorPosition != -1) { this.style.DrawCursor(base.position, content, 0, keyboardTextEditor.altCursorPosition); } this.style.contentOffset = contentOffset; this.style.Internal_clipOffset = Vector2.zero; keyboardTextEditor.PostDrawCursor(); } }
private void DrawWithTextSelectionAndCursor(IStylePainter painter, string newText) { KeyboardTextEditor keyboardTextEditor = this.editor as KeyboardTextEditor; if (keyboardTextEditor != null) { keyboardTextEditor.PreDrawCursor(newText); int cursorIndex = keyboardTextEditor.cursorIndex; int selectIndex = keyboardTextEditor.selectIndex; Rect localPosition = keyboardTextEditor.localPosition; Vector2 scrollOffset = keyboardTextEditor.scrollOffset; IStyle style = base.style; TextStylePainterParameters defaultTextParameters = painter.GetDefaultTextParameters(this); defaultTextParameters.text = " "; defaultTextParameters.wordWrapWidth = 0f; defaultTextParameters.wordWrap = false; float num = painter.ComputeTextHeight(defaultTextParameters); float num2 = (!style.wordWrap) ? 0f : base.contentRect.width; Input.compositionCursorPos = keyboardTextEditor.graphicalCursorPos - scrollOffset + new Vector2(localPosition.x, localPosition.y + num); Color color = (!(this.cursorColor != Color.clear)) ? GUI.skin.settings.cursorColor : this.cursorColor; int num3 = (!string.IsNullOrEmpty(Input.compositionString)) ? (cursorIndex + Input.compositionString.Length) : selectIndex; painter.DrawBackground(this); if (cursorIndex != num3) { RectStylePainterParameters defaultRectParameters = painter.GetDefaultRectParameters(this); defaultRectParameters.color = this.selectionColor; defaultRectParameters.borderLeftWidth = 0f; defaultRectParameters.borderTopWidth = 0f; defaultRectParameters.borderRightWidth = 0f; defaultRectParameters.borderBottomWidth = 0f; defaultRectParameters.borderTopLeftRadius = 0f; defaultRectParameters.borderTopRightRadius = 0f; defaultRectParameters.borderBottomRightRadius = 0f; defaultRectParameters.borderBottomLeftRadius = 0f; int cursorIndex2 = (cursorIndex >= num3) ? num3 : cursorIndex; int cursorIndex3 = (cursorIndex <= num3) ? num3 : cursorIndex; CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this); defaultCursorPositionParameters.text = keyboardTextEditor.text; defaultCursorPositionParameters.wordWrapWidth = num2; defaultCursorPositionParameters.cursorIndex = cursorIndex2; Vector2 a = painter.GetCursorPosition(defaultCursorPositionParameters); defaultCursorPositionParameters.cursorIndex = cursorIndex3; Vector2 a2 = painter.GetCursorPosition(defaultCursorPositionParameters); a -= scrollOffset; a2 -= scrollOffset; if (Mathf.Approximately(a.y, a2.y)) { defaultRectParameters.layout = new Rect(a.x, a.y, a2.x - a.x, num); painter.DrawRect(defaultRectParameters); } else { defaultRectParameters.layout = new Rect(a.x, a.y, num2 - a.x, num); painter.DrawRect(defaultRectParameters); float num4 = a2.y - a.y - num; if (num4 > 0f) { defaultRectParameters.layout = new Rect(0f, a.y + num, num2, num4); painter.DrawRect(defaultRectParameters); } defaultRectParameters.layout = new Rect(0f, a2.y, a2.x, num); painter.DrawRect(defaultRectParameters); } } painter.DrawBorder(this); if (!string.IsNullOrEmpty(keyboardTextEditor.text) && base.contentRect.width > 0f && base.contentRect.height > 0f) { defaultTextParameters = painter.GetDefaultTextParameters(this); defaultTextParameters.layout = new Rect(base.contentRect.x - scrollOffset.x, base.contentRect.y - scrollOffset.y, base.contentRect.width, base.contentRect.height); defaultTextParameters.text = keyboardTextEditor.text; painter.DrawText(defaultTextParameters); } if (cursorIndex == num3 && style.font != null) { CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this); defaultCursorPositionParameters.text = keyboardTextEditor.text; defaultCursorPositionParameters.wordWrapWidth = num2; defaultCursorPositionParameters.cursorIndex = cursorIndex; Vector2 a3 = painter.GetCursorPosition(defaultCursorPositionParameters); a3 -= scrollOffset; RectStylePainterParameters painterParams = new RectStylePainterParameters { layout = new Rect(a3.x, a3.y, 1f, num), color = color }; painter.DrawRect(painterParams); } if (keyboardTextEditor.altCursorPosition != -1) { CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this); defaultCursorPositionParameters.text = keyboardTextEditor.text.Substring(0, keyboardTextEditor.altCursorPosition); defaultCursorPositionParameters.wordWrapWidth = num2; defaultCursorPositionParameters.cursorIndex = keyboardTextEditor.altCursorPosition; Vector2 a4 = painter.GetCursorPosition(defaultCursorPositionParameters); a4 -= scrollOffset; RectStylePainterParameters painterParams2 = new RectStylePainterParameters { layout = new Rect(a4.x, a4.y, 1f, num), color = color }; painter.DrawRect(painterParams2); } keyboardTextEditor.PostDrawCursor(); } }