diff options
| author | nyamatongwe <unknown> | 2009-07-04 00:47:05 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2009-07-04 00:47:05 +0000 | 
| commit | 90375facb97e9a9c1138b804b8db9edd12199f3c (patch) | |
| tree | e0af701597f5ec3e7b51645992ee2aeb8a2ecd97 /src/Editor.cxx | |
| parent | 8ba8f85b7e0b8b3621c244cd711cdbefe0822e6e (diff) | |
| download | scintilla-mirror-90375facb97e9a9c1138b804b8db9edd12199f3c.tar.gz | |
Check virtual space options for rectangular selection.
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 37 | 
1 files changed, 23 insertions, 14 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index fd2c04447..a3a70dba8 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -689,18 +689,20 @@ void Editor::SetRectangularRange() {  		// Right of rectangle  		int maxX = Platform::Maximum(xAnchor, xCaret);  		sel.EmptyRanges(); -		if (anchorTop) { -			for (int line=lineStart; line<=lineEnd; line++) { -				SelectionPosition spMin(SPositionFromLineX(line, minX)); -				SelectionPosition spMax(SPositionFromLineX(line, maxX)); -				sel.AddSelection(spMin, spMax, anchorLeft); -			} -		} else { -			for (int line=lineEnd; line>=lineStart; line--) { -				SelectionPosition spMin(SPositionFromLineX(line, minX)); -				SelectionPosition spMax(SPositionFromLineX(line, maxX)); -				sel.AddSelection(spMin, spMax, anchorLeft); +		int increment = 1; +		if (!anchorTop) { +			increment = -1; +			lineEnd = lineStart; +			lineStart = pdoc->LineFromPosition(selEnd.Position()); +		} +		for (int line=lineStart; line != lineEnd+increment; line += increment) { +			SelectionPosition spMin(SPositionFromLineX(line, minX)); +			SelectionPosition spMax(SPositionFromLineX(line, maxX)); +			if ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) == 0) { +				spMin.SetVirtualSpace(0);				 +				spMax.SetVirtualSpace(0);				  			} +			sel.AddSelection(spMin, spMax, anchorLeft);  		}  	}  } @@ -5506,10 +5508,15 @@ void Editor::DwellEnd(bool mouseMoved) {  	}  } +static bool AllowVirtualSpace(int	virtualSpaceOptions, bool rectangular) { +	return ((virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0) +		|| (rectangular && ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) != 0)); +} +  void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {  	//Platform::DebugPrintf("ButtonDown %d %d = %d alt=%d %d\n", curTime, lastClickTime, curTime - lastClickTime, alt, inDragDrop);  	ptMouseLast = pt; -	SelectionPosition newPos = SPositionFromLocation(pt, false, false, (virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0); +	SelectionPosition newPos = SPositionFromLocation(pt, false, false, AllowVirtualSpace(virtualSpaceOptions, alt));  	newPos = MovePositionOutsideChar(newPos, sel.MainCaret() - newPos.Position());  	inDragDrop = ddNone;  	sel.SetMoveExtends(false); @@ -5682,7 +5689,8 @@ void Editor::ButtonMove(Point pt) {  		DwellEnd(true);  	} -	SelectionPosition movePos = SPositionFromLocation(pt, false, false, (virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0); +	SelectionPosition movePos = SPositionFromLocation(pt, false, false,  +		AllowVirtualSpace(virtualSpaceOptions, sel.IsRectangular()));  	movePos = MovePositionOutsideChar(movePos, sel.MainCaret() - movePos.Position());  	if (inDragDrop == ddInitial) { @@ -5787,7 +5795,8 @@ void Editor::ButtonMove(Point pt) {  void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {  	//Platform::DebugPrintf("ButtonUp %d %d\n", HaveMouseCapture(), inDragDrop); -	SelectionPosition newPos = SPositionFromLocation(pt, false, false, (virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0); +	SelectionPosition newPos = SPositionFromLocation(pt, false, false,  +		AllowVirtualSpace(virtualSpaceOptions, sel.IsRectangular()));  	newPos = MovePositionOutsideChar(newPos, sel.MainCaret() - newPos.Position());  	if (inDragDrop == ddInitial) {  		inDragDrop = ddNone; | 
