diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 11 | ||||
| -rw-r--r-- | src/PerLine.cxx | 23 | ||||
| -rw-r--r-- | src/PerLine.h | 2 | 
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 { | 
