diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/CellBuffer.cxx | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 27e62ac61..0d3090259 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -96,17 +96,20 @@ void MarkerHandleSet::RemoveHandle(int handle) {  	}  } -void MarkerHandleSet::RemoveNumber(int markerNum) { +bool MarkerHandleSet::RemoveNumber(int markerNum) { +	bool performedDeletion = false;  	MarkerHandleNumber **pmhn = &root;  	while (*pmhn) {  		MarkerHandleNumber *mhn = *pmhn;  		if (mhn->number == markerNum) {  			*pmhn = mhn->next;  			delete mhn; +			performedDeletion = true;  		} else {  			pmhn = &((*pmhn)->next);  		}  	} +	return performedDeletion;  }  void MarkerHandleSet::CombineWith(MarkerHandleSet *other) { @@ -306,13 +309,18 @@ void LineVector::MergeMarkers(int pos) {  	}  } -void LineVector::DeleteMark(int line, int markerNum) { +void LineVector::DeleteMark(int line, int markerNum, bool all) {  	if (linesData[line].handleSet) {  		if (markerNum == -1) {  			delete linesData[line].handleSet;  			linesData[line].handleSet = 0;  		} else { -			linesData[line].handleSet->RemoveNumber(markerNum); +			bool performedDeletion =  +				linesData[line].handleSet->RemoveNumber(markerNum); +			while (all && performedDeletion) { +				performedDeletion =  +					linesData[line].handleSet->RemoveNumber(markerNum); +			}  			if (linesData[line].handleSet->Length() == 0) {  				delete linesData[line].handleSet;  				linesData[line].handleSet = 0; @@ -833,7 +841,7 @@ int CellBuffer::AddMark(int line, int markerNum) {  void CellBuffer::DeleteMark(int line, int markerNum) {  	if ((line >= 0) && (line < lv.lines)) { -		lv.DeleteMark(line, markerNum); +		lv.DeleteMark(line, markerNum, false);  	}  } @@ -849,7 +857,7 @@ int CellBuffer::GetMark(int line) {  void CellBuffer::DeleteAllMarks(int markerNum) {  	for (int line = 0; line < lv.lines; line++) { -		lv.DeleteMark(line, markerNum); +		lv.DeleteMark(line, markerNum, true);  	}  } | 
