diff options
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 23 | 
1 files changed, 11 insertions, 12 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index b266ef2a5..b56e8f303 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -931,6 +931,13 @@ int Editor::SelectionEnd() {  	return Platform::Maximum(currentPos, anchor);  } +void Editor::SetRectangularRange() { +	if (selType == selRectangle) { +		xStartSelect = XFromPosition(anchor); +		xEndSelect = XFromPosition(currentPos); +	} +} +  void Editor::InvalidateSelection(int currentPos_, int anchor_) {  	int firstAffected = anchor;  	if (firstAffected > currentPos) @@ -958,10 +965,7 @@ void Editor::SetSelection(int currentPos_, int anchor_) {  		currentPos = currentPos_;  		anchor = anchor_;  	} -	if (selType == selRectangle) { -		xStartSelect = XFromPosition(anchor); -		xEndSelect = XFromPosition(currentPos); -	} +	SetRectangularRange();  	ClaimSelection();  } @@ -971,10 +975,7 @@ void Editor::SetSelection(int currentPos_) {  		InvalidateSelection(currentPos_, currentPos_);  		currentPos = currentPos_;  	} -	if (selType == selRectangle) { -		xStartSelect = XFromPosition(anchor); -		xEndSelect = XFromPosition(currentPos); -	} +	SetRectangularRange();  	ClaimSelection();  } @@ -5070,9 +5071,9 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b  					SetEmptySelection(newPos);  				}  				selType = alt ? selRectangle : selStream; -				xStartSelect = xEndSelect = pt.x - vs.fixedColumnWidth + xOffset;  				selectionType = selChar;  				originalAnchorPos = currentPos; +				SetRectangularRange();  			}  		}  	} @@ -5266,9 +5267,7 @@ void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {  				SetSelection(newPos);  			}  		} -		// Now we rely on the current pos to compute rectangular selection -		xStartSelect = XFromPosition(anchor); -		xEndSelect = XFromPosition(currentPos); +		SetRectangularRange();  		lastClickTime = curTime;  		lastClick = pt;  		lastXChosen = pt.x; | 
