diff options
author | nyamatongwe <unknown> | 2004-06-23 22:57:00 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2004-06-23 22:57:00 +0000 |
commit | 9738f5760349dd0984bdad292458f0cdf0f66b9d (patch) | |
tree | 18b74d457c4682a9b8dee6d59bd00a7144a428f4 /src | |
parent | 287ff8625321c37cb09a034545064246631fd25f (diff) | |
download | scintilla-mirror-9738f5760349dd0984bdad292458f0cdf0f66b9d.tar.gz |
Delete all markers for a particular marker number now deletes
multiple markers on one line.
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); } } |