예제 #1
0
        public bool ExpandTo(GLine line, int position, RangeType type)
        {
            line.ExpandBuffer(position + 1);
            //_disabledTemporary = false;
            _state = SelectionState.Expansion;

            _forwardDestination.Line  = line.ID;
            _backwardDestination.Line = line.ID;
            //Debug.WriteLine(String.Format("ExpandTo Line{0} Position{1}", line.ID, position));
            switch (type)
            {
            case RangeType.Char:
                _forwardDestination.Column  = position;
                _backwardDestination.Column = position;
                break;

            case RangeType.Word:
                _forwardDestination.Column  = line.FindPrevWordBreak(position) + 1;
                _backwardDestination.Column = line.FindNextWordBreak(position);
                break;

            case RangeType.Line:
                _forwardDestination.Column  = 0;
                _backwardDestination.Column = line.DisplayLength;
                break;
            }

            return(true);
        }
예제 #2
0
        public bool StartSelection(GLine line, int position, RangeType type, int x, int y)
        {
            Debug.Assert(position >= 0);
            //日本語文字の右側からの選択は左側に修正
            line.ExpandBuffer(position + 1);
            if (line.IsRightSideOfZenkaku(position))
            {
                position--;
            }

            //_disabledTemporary = false;
            _pivotType                  = type;
            _forwardPivot.Line          = line.ID;
            _backwardPivot.Line         = line.ID;
            _forwardDestination.Line    = line.ID;
            _forwardDestination.Column  = position;
            _backwardDestination.Line   = line.ID;
            _backwardDestination.Column = position;
            switch (type)
            {
            case RangeType.Char:
                _forwardPivot.Column  = position;
                _backwardPivot.Column = position;
                break;

            case RangeType.Word: {
                int start;
                int end;
                line.FindWordBreakPoint(position, out start, out end);
                _forwardPivot.Column  = start;
                _backwardPivot.Column = end;
            }
            break;

            case RangeType.Line:
                _forwardPivot.Column  = 0;
                _backwardPivot.Column = line.DisplayLength;
                break;
            }
            _state  = SelectionState.Pivot;
            _startX = x;
            _startY = y;
            FireSelectionStarted();
            return(true);
        }
예제 #3
0
        public bool StartSelection(GLine line, int position, RangeType type, int x, int y)
        {
            Debug.Assert(position >= 0);
            //日本語文字の右側からの選択は左側に修正
            line.ExpandBuffer(position + 1);
            if (line.Text[position] == GLine.WIDECHAR_PAD)
            {
                position--;
            }

            //_disabledTemporary = false;
            _pivotType                  = type;
            _forwardPivot.Line          = line.ID;
            _backwardPivot.Line         = line.ID;
            _forwardDestination.Line    = line.ID;
            _forwardDestination.Column  = position;
            _backwardDestination.Line   = line.ID;
            _backwardDestination.Column = position;
            switch (type)
            {
            case RangeType.Char:
                _forwardPivot.Column  = position;
                _backwardPivot.Column = position;
                break;

            case RangeType.Word:
                _forwardPivot.Column  = line.FindPrevWordBreak(position) + 1;
                _backwardPivot.Column = line.FindNextWordBreak(position);
                break;

            case RangeType.Line:
                _forwardPivot.Column  = 0;
                _backwardPivot.Column = line.DisplayLength;
                break;
            }
            _state  = SelectionState.Pivot;
            _startX = x;
            _startY = y;
            FireSelectionStarted();
            return(true);
        }