aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Document.cxx11
-rw-r--r--src/PerLine.cxx23
-rw-r--r--src/PerLine.h2
3 files changed, 24 insertions, 12 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 95777278c..9d1bf1d3b 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -559,7 +559,7 @@ int SCI_METHOD Document::GetLevel(Sci_Position line) const {
}
FoldLevel Document::GetFoldLevel(Sci_Position line) const noexcept {
- return static_cast<FoldLevel>(Levels()->GetLevel(line));
+ return Levels()->GetFoldLevel(line);
}
void Document::ClearLevels() {
@@ -598,14 +598,7 @@ Sci::Line Document::GetLastChild(Sci::Line lineParent, std::optional<FoldLevel>
}
Sci::Line Document::GetFoldParent(Sci::Line line) const noexcept {
- const FoldLevel level = LevelNumberPart(GetFoldLevel(line));
- for (Sci::Line lineLook = line - 1; lineLook >= 0; lineLook--) {
- const FoldLevel levelTry = GetFoldLevel(lineLook);
- if (LevelIsHeader(levelTry) && LevelNumberPart(levelTry) < level) {
- return lineLook;
- }
- }
- return -1;
+ return Levels()->GetFoldParent(line);
}
void Document::GetHighlightDelimiters(HighlightDelimiter &highlightDelimiter, Sci::Line line, Sci::Line lastLine) {
diff --git a/src/PerLine.cxx b/src/PerLine.cxx
index 78f7c7dc5..4d76b0b79 100644
--- a/src/PerLine.cxx
+++ b/src/PerLine.cxx
@@ -264,11 +264,28 @@ int LineLevels::SetLevel(Sci::Line line, int level, Sci::Line lines) {
}
int LineLevels::GetLevel(Sci::Line line) const noexcept {
- if (levels.Length() && (line >= 0) && (line < levels.Length())) {
+ if ((line >= 0) && (line < levels.Length())) {
return levels[line];
- } else {
- return static_cast<int>(Scintilla::FoldLevel::Base);
}
+ return static_cast<int>(Scintilla::FoldLevel::Base);
+}
+
+Scintilla::FoldLevel LineLevels::GetFoldLevel(Sci::Line line) const noexcept {
+ if ((line >= 0) && (line < levels.Length())) {
+ return static_cast<FoldLevel>(levels[line]);
+ }
+ return Scintilla::FoldLevel::Base;
+}
+
+Sci::Line LineLevels::GetFoldParent(Sci::Line line) const noexcept {
+ const FoldLevel level = LevelNumberPart(GetFoldLevel(line));
+ for (Sci::Line lineLook = line - 1; lineLook >= 0; lineLook--) {
+ const FoldLevel levelTry = GetFoldLevel(lineLook);
+ if (LevelIsHeader(levelTry) && LevelNumberPart(levelTry) < level) {
+ return lineLook;
+ }
+ }
+ return -1;
}
void LineState::Init() {
diff --git a/src/PerLine.h b/src/PerLine.h
index 5b57dcaa9..27009d5ad 100644
--- a/src/PerLine.h
+++ b/src/PerLine.h
@@ -75,6 +75,8 @@ public:
void ClearLevels();
int SetLevel(Sci::Line line, int level, Sci::Line lines);
int GetLevel(Sci::Line line) const noexcept;
+ FoldLevel GetFoldLevel(Sci::Line line) const noexcept;
+ Sci::Line GetFoldParent(Sci::Line line) const noexcept;
};
class LineState : public PerLine {