diff options
| author | nyamatongwe <unknown> | 2001-01-16 10:17:11 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2001-01-16 10:17:11 +0000 | 
| commit | 9434647675ef0e65148b119cad80c0acf24c7b68 (patch) | |
| tree | dd70e97b27a991f8902bdc1417eab1e26884d3cb | |
| parent | f1dafc43a6a6dd32d7f91935bc6be065d84d305b (diff) | |
| download | scintilla-mirror-9434647675ef0e65148b119cad80c0acf24c7b68.tar.gz | |
Changed undo node coalescing so that a paste followed by typing creates
two undo steps - one for the typing and one for the paste.
| -rw-r--r-- | src/CellBuffer.cxx | 3 | ||||
| -rw-r--r-- | src/Editor.cxx | 10 | 
2 files changed, 11 insertions, 2 deletions
| diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index befec75fc..82bf42ee7 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -458,6 +458,9 @@ void UndoHistory::AppendAction(actionType at, int position, char *data, int leng  			           (position != (actPrevious.position + actPrevious.lenData*2))) {  				// Insertions must be immediately after to coalesce  				currentAction++; +            } else if (!actions[currentAction].mayCoalesce) { +				// Not allowed to coalesce if this set +				currentAction++;  			} else {  				//Platform::DebugPrintf("action coalesced\n");  			} diff --git a/src/Editor.cxx b/src/Editor.cxx index 0fab781d9..dc5c03622 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -1549,7 +1549,7 @@ void Editor::AddCharUTF(char *s, unsigned int len) {  void Editor::ClearSelection() {  	if (selType == selRectangle) { -		pdoc->BeginUndoAction(); +    	pdoc->BeginUndoAction();  		int lineStart = pdoc->LineFromPosition(SelectionStart());  		int lineEnd = pdoc->LineFromPosition(SelectionEnd());  		int startPos = SelectionStart(); @@ -1561,23 +1561,27 @@ void Editor::ClearSelection() {  			}  		}  		SetEmptySelection(startPos); +    	pdoc->EndUndoAction();  		selType = selStream; -		pdoc->EndUndoAction();  	} else {  		int startPos = SelectionStart();  		unsigned int chars = SelectionEnd() - startPos;  		SetEmptySelection(startPos);  		if (0 != chars) { +           	pdoc->EndUndoAction();  			pdoc->DeleteChars(startPos, chars); +           	pdoc->BeginUndoAction();  		}  	}  }  void Editor::ClearAll() { +	pdoc->BeginUndoAction();  	if (0 != pdoc->Length()) {  		pdoc->DeleteChars(0, pdoc->Length());  	}  	cs.Clear(); +	pdoc->EndUndoAction();  	anchor = 0;  	currentPos = 0;  	SetTopLine(0); @@ -1607,6 +1611,7 @@ void Editor::PasteRectangular(int pos, const char *ptr, int len) {  	int xInsert = XFromPosition(currentPos);  	int line = pdoc->LineFromPosition(currentPos);  	bool prevCr = false; +	pdoc->BeginUndoAction();  	for (int i = 0; i < len; i++) {  		if ((ptr[i] == '\r') || (ptr[i] == '\n')) {  			if ((ptr[i] == '\r') || (!prevCr)) @@ -1626,6 +1631,7 @@ void Editor::PasteRectangular(int pos, const char *ptr, int len) {  			prevCr = false;  		}  	} +	pdoc->EndUndoAction();  	SetEmptySelection(insertPos);  } | 
