diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.cxx | 17 | ||||
| -rw-r--r-- | src/Editor.h | 4 | 
2 files changed, 12 insertions, 9 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index c857d2e71..76dbd1ba7 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -836,7 +836,7 @@ int Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) {  	return pos;  } -int Editor::MovePositionTo(int newPos, bool extend) { +int Editor::MovePositionTo(int newPos, bool extend, bool ensureVisible) {  	int delta = newPos - currentPos;  	newPos = pdoc->ClampPositionIntoDocument(newPos);  	newPos = MovePositionOutsideChar(newPos, delta); @@ -845,7 +845,8 @@ int Editor::MovePositionTo(int newPos, bool extend) {  	} else {  		SetEmptySelection(newPos);  	} -	EnsureCaretVisible(); +	if (ensureVisible) +		EnsureCaretVisible();  	ShowCaretAtCurrentPosition();  	NotifyMove(newPos);  	return 0; @@ -909,16 +910,18 @@ void Editor::HorizontalScrollTo(int xPos) {  	}  } -void Editor::MoveCaretInsideView() { +void Editor::MoveCaretInsideView(bool ensureVisible) {  	PRectangle rcClient = GetTextRectangle();  	Point pt = LocationFromPosition(currentPos);  	if (pt.y < rcClient.top) {  		MovePositionTo(PositionFromLocation( -		                   Point(lastXChosen, rcClient.top))); +		                   Point(lastXChosen, rcClient.top)), +						   false, ensureVisible);  	} else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) {  		int yOfLastLineFullyDisplayed = rcClient.top + (LinesOnScreen() - 1) * vs.lineHeight;  		MovePositionTo(PositionFromLocation( -		                   Point(lastXChosen, rcClient.top + yOfLastLineFullyDisplayed))); +		                   Point(lastXChosen, rcClient.top + yOfLastLineFullyDisplayed)), +						   false, ensureVisible);  	}  } @@ -3180,7 +3183,7 @@ int Editor::KeyCommand(unsigned int iMessage) {  		break;  	case SCI_LINESCROLLDOWN:  		ScrollTo(topLine + 1); -		MoveCaretInsideView(); +		MoveCaretInsideView(false);  		break;  	case SCI_LINEUP:  		CursorUpOrDown(-1); @@ -3190,7 +3193,7 @@ int Editor::KeyCommand(unsigned int iMessage) {  		break;  	case SCI_LINESCROLLUP:  		ScrollTo(topLine - 1); -		MoveCaretInsideView(); +		MoveCaretInsideView(false);  		break;  	case SCI_CHARLEFT:  		if (SelectionEmpty()) { diff --git a/src/Editor.h b/src/Editor.h index 451f12341..5c838ebce 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -322,14 +322,14 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	void SetSelection(int currentPos_);  	void SetEmptySelection(int currentPos_);  	int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true); -	int MovePositionTo(int newPos, bool extend = false); +	int MovePositionTo(int newPos, bool extend=false, bool ensureVisible=true);  	int MovePositionSoVisible(int pos, int moveDir);  	void SetLastXChosen();  	void ScrollTo(int line);  	virtual void ScrollText(int linesToMove);  	void HorizontalScrollTo(int xPos); -	void MoveCaretInsideView(); +	void MoveCaretInsideView(bool ensureVisible=true);  	int DisplayFromPosition(int pos);  	void EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true);  	void ShowCaretAtCurrentPosition(); | 
