Example #1
0
        void UpdateSelection(TextField.CharPosition cp)
        {
            if (_selectionStart == _caretPosition)
            {
                _selectionShape.Clear();
                return;
            }

            TextField.CharPosition start;
            if (_editing && IMEAdapter.compositionString.Length > 0)
            {
                if (_selectionStart < _caretPosition)
                {
                    cp    = GetCharPosition(_caretPosition);
                    start = GetCharPosition(_selectionStart);
                }
                else
                {
                    start = GetCharPosition(_selectionStart + IMEAdapter.compositionString.Length);
                }
            }
            else
            {
                start = GetCharPosition(_selectionStart);
            }
            if (start.charIndex > cp.charIndex)
            {
                TextField.CharPosition tmp = start;
                start = cp;
                cp    = tmp;
            }

            Vector2 v1 = GetCharLocation(start);
            Vector2 v2 = GetCharLocation(cp);

            _selectionShape.rects.Clear();
            textField.GetLinesShape(start.lineIndex, v1.X - textField.x, cp.lineIndex, v2.X - textField.x, false, _selectionShape.rects);
            _selectionShape.Refresh();
            _selectionShape.position = textField.position;
        }