diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 11 | ||||
| -rw-r--r-- | src/Document.h | 12 | 
2 files changed, 13 insertions, 10 deletions
diff --git a/src/Document.cxx b/src/Document.cxx index f74ac5830..b9b284e96 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -399,14 +399,15 @@ void Document::GetHighlightDelimiters(int line, HighlightDelimiter &highlightDel  			}  		} else if (!(lineLookLevel & SC_FOLDLEVELWHITEFLAG)) {  			endOfTailOfWhiteFlag = lineLook - 1; -			if (lineLookLevel & SC_FOLDLEVELHEADERFLAG) { +			levelNumber = lineLookLevel & SC_FOLDLEVELNUMBERMASK; +			if (lineLookLevel & SC_FOLDLEVELHEADERFLAG && +			        //Managed the folding block when a fold header does not have any subordinate lines to fold away. +			        (levelNumber < (GetLevel(lineLook + 1) & SC_FOLDLEVELNUMBERMASK))) {  				beginFoldBlockFound = true;  				beginFoldBlock = lineLook;  				beginMarginCorrectlyDrawnZoneFound = true;  				beginMarginCorrectlyDrawnZone = endOfTailOfWhiteFlag;  				levelNumber = GetLevel(lineLook + 1) & SC_FOLDLEVELNUMBERMASK;; -			} else { -				levelNumber = lineLookLevel & SC_FOLDLEVELNUMBERMASK;  			}  		}  	} @@ -434,7 +435,9 @@ void Document::GetHighlightDelimiters(int line, HighlightDelimiter &highlightDel  			endFoldBlockFound = true;  			endFoldBlock = -1;  		} -		if (!endMarginCorrectlyDrawnZoneFound && (lineLookLevel & SC_FOLDLEVELHEADERFLAG)) { +		if (!endMarginCorrectlyDrawnZoneFound && (lineLookLevel & SC_FOLDLEVELHEADERFLAG) && +		        //Managed the folding block when a fold header does not have any subordinate lines to fold away. +		        (levelNumber < (GetLevel(lineLook + 1) & SC_FOLDLEVELNUMBERMASK))) {  			endMarginCorrectlyDrawnZoneFound = true;  			endMarginCorrectlyDrawnZone = lineLook;  		} diff --git a/src/Document.h b/src/Document.h index 851c10081..125a4a0a6 100644 --- a/src/Document.h +++ b/src/Document.h @@ -130,7 +130,7 @@ public:  	}  	bool isCurrentBlockHighlight(int line) { -		return isEnabled && beginFoldBlock <= line && line <= endFoldBlock; +		return isEnabled && beginFoldBlock != -1 && beginFoldBlock <= line && line <= endFoldBlock;  	}  	bool isHeadBlockFold(int line) { @@ -138,17 +138,17 @@ public:  	}  	bool isBodyBlockFold(int line) { -		return beginFoldBlock < line && line < endFoldBlock; +		return beginFoldBlock != -1 && beginFoldBlock < line && line < endFoldBlock;  	}  	bool isTailBlockFold(int line) { -		return beginFoldBlock < line && line == endFoldBlock; +		return beginFoldBlock != -1 && beginFoldBlock < line && line == endFoldBlock;  	}  	// beginFoldBlock : Begin of current fold block. -	// endStartBlock : End of zone where margin is already drawn. -	// beginMarginCorrectlyDrawnZone : Begin of zone where margin is already drawn. -	// endMarginCorrectlyDrawnZone : End of current fold block. +	// endStartBlock : End of current fold block. +	// beginMarginCorrectlyDrawnZone : Begin of zone where margin is correctly drawn. +	// endMarginCorrectlyDrawnZone : End of zone where margin is correctly drawn.  	int beginFoldBlock;  	int endFoldBlock;  	int beginMarginCorrectlyDrawnZone;  | 
