aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <unknown>2012-06-18 10:29:27 +1000
committernyamatongwe <unknown>2012-06-18 10:29:27 +1000
commit7d99273987eb95b0abd36e989daf48f82b517f1f (patch)
tree8a2faacb0bc43a279f681aa6b01c87be9afdacce /src
parentf0d56e473978dcfa017b6597ef4e2e09e5a477e6 (diff)
downloadscintilla-mirror-7d99273987eb95b0abd36e989daf48f82b517f1f.tar.gz
Remove marker only once for SCI_MARKERDELETE. Bug #3535806.
Diffstat (limited to 'src')
-rw-r--r--src/PerLine.cxx8
-rw-r--r--src/PerLine.h2
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);
};