diff options
author | nyamatongwe <unknown> | 2012-06-18 10:29:27 +1000 |
---|---|---|
committer | nyamatongwe <unknown> | 2012-06-18 10:29:27 +1000 |
commit | 7d99273987eb95b0abd36e989daf48f82b517f1f (patch) | |
tree | 8a2faacb0bc43a279f681aa6b01c87be9afdacce /src | |
parent | f0d56e473978dcfa017b6597ef4e2e09e5a477e6 (diff) | |
download | scintilla-mirror-7d99273987eb95b0abd36e989daf48f82b517f1f.tar.gz |
Remove marker only once for SCI_MARKERDELETE. Bug #3535806.
Diffstat (limited to 'src')
-rw-r--r-- | src/PerLine.cxx | 8 | ||||
-rw-r--r-- | src/PerLine.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/PerLine.cxx b/src/PerLine.cxx index 0bdb60254..a2225dbb6 100644 --- a/src/PerLine.cxx +++ b/src/PerLine.cxx @@ -99,7 +99,7 @@ void MarkerHandleSet::RemoveHandle(int handle) { } } -bool MarkerHandleSet::RemoveNumber(int markerNum) { +bool MarkerHandleSet::RemoveNumber(int markerNum, bool all) { bool performedDeletion = false; MarkerHandleNumber **pmhn = &root; while (*pmhn) { @@ -108,6 +108,8 @@ bool MarkerHandleSet::RemoveNumber(int markerNum) { *pmhn = mhn->next; delete mhn; performedDeletion = true; + if (!all) + break; } else { pmhn = &((*pmhn)->next); } @@ -223,10 +225,10 @@ bool LineMarkers::DeleteMark(int line, int markerNum, bool all) { delete markers[line]; markers[line] = NULL; } else { - bool performedDeletion = markers[line]->RemoveNumber(markerNum); + bool performedDeletion = markers[line]->RemoveNumber(markerNum, all); someChanges = someChanges || performedDeletion; while (all && performedDeletion) { - performedDeletion = markers[line]->RemoveNumber(markerNum); + performedDeletion = markers[line]->RemoveNumber(markerNum, all); someChanges = someChanges || performedDeletion; } if (markers[line]->Length() == 0) { diff --git a/src/PerLine.h b/src/PerLine.h index b43c52bb8..50ce1e551 100644 --- a/src/PerLine.h +++ b/src/PerLine.h @@ -37,7 +37,7 @@ public: bool Contains(int handle) const; bool InsertHandle(int handle, int markerNum); void RemoveHandle(int handle); - bool RemoveNumber(int markerNum); + bool RemoveNumber(int markerNum, bool all); void CombineWith(MarkerHandleSet *other); }; |