aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Document.cxx4
-rw-r--r--src/Document.h1
-rw-r--r--src/Editor.cxx10
-rw-r--r--src/PerLine.cxx11
-rw-r--r--src/PerLine.h1
5 files changed, 19 insertions, 8 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 5c05aa5e0..4a7546cf1 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -185,6 +185,10 @@ int Document::GetMark(int line) {
return static_cast<LineMarkers *>(perLineData[ldMarkers])->MarkValue(line);
}
+int Document::MarkerNext(int lineStart, int mask) const {
+ return static_cast<LineMarkers *>(perLineData[ldMarkers])->MarkerNext(lineStart, mask);
+}
+
int Document::AddMark(int line, int markerNum) {
if (line >= 0 && line <= LinesTotal()) {
int prev = static_cast<LineMarkers *>(perLineData[ldMarkers])->
diff --git a/src/Document.h b/src/Document.h
index 00d23a45d..15aecbfe4 100644
--- a/src/Document.h
+++ b/src/Document.h
@@ -323,6 +323,7 @@ public:
cb.GetStyleRange(buffer, position, lengthRetrieve);
}
int GetMark(int line);
+ int MarkerNext(int lineStart, int mask) const;
int AddMark(int line, int markerNum);
void AddMarkSet(int line, int valueSet);
void DeleteMark(int line, int markerNum);
diff --git a/src/Editor.cxx b/src/Editor.cxx
index de0afdf49..2e4d724e5 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -8037,14 +8037,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_MARKERGET:
return pdoc->GetMark(wParam);
- case SCI_MARKERNEXT: {
- int lt = pdoc->LinesTotal();
- for (int iLine = wParam; iLine < lt; iLine++) {
- if ((pdoc->GetMark(iLine) & lParam) != 0)
- return iLine;
- }
- }
- return -1;
+ case SCI_MARKERNEXT:
+ return pdoc->MarkerNext(wParam, lParam);
case SCI_MARKERPREVIOUS: {
for (int iLine = wParam; iLine >= 0; iLine--) {
diff --git a/src/PerLine.cxx b/src/PerLine.cxx
index 7d961a886..c31d4ea9b 100644
--- a/src/PerLine.cxx
+++ b/src/PerLine.cxx
@@ -182,6 +182,17 @@ int LineMarkers::MarkValue(int line) {
return 0;
}
+int LineMarkers::MarkerNext(int lineStart, int mask) const {
+ int length = markers.Length();
+ for (int iLine = lineStart; iLine < length; iLine++) {
+ MarkerHandleSet *onLine = markers[iLine];
+ if (onLine && ((onLine->MarkValue() & mask) != 0))
+ //if ((pdoc->GetMark(iLine) & lParam) != 0)
+ return iLine;
+ }
+ return -1;
+}
+
int LineMarkers::AddMark(int line, int markerNum, int lines) {
handleCurrent++;
if (!markers.Length()) {
diff --git a/src/PerLine.h b/src/PerLine.h
index df4728632..b43c52bb8 100644
--- a/src/PerLine.h
+++ b/src/PerLine.h
@@ -54,6 +54,7 @@ public:
virtual void RemoveLine(int line);
int MarkValue(int line);
+ int MarkerNext(int lineStart, int mask) const;
int AddMark(int line, int marker, int lines);
void MergeMarkers(int pos);
bool DeleteMark(int line, int markerNum, bool all);