diff options
Diffstat (limited to 'src/Document.cxx')
| -rw-r--r-- | src/Document.cxx | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/src/Document.cxx b/src/Document.cxx index 8238ea758..b50b9691a 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -149,7 +149,10 @@ int Document::GetLastChild(int lineParent, int level) {  		level = GetLevel(lineParent) & SC_FOLDLEVELNUMBERMASK;  	int maxLine = LinesTotal();  	int lineMaxSubord = lineParent; -	while ((lineMaxSubord < maxLine-1) && IsSubordinate(level, GetLevel(lineMaxSubord+1))) { +	while (lineMaxSubord < maxLine-1) { +		EnsureStyledTo(LineStart(lineMaxSubord+2)); +		if (!IsSubordinate(level, GetLevel(lineMaxSubord+1))) +			break;  		lineMaxSubord++;  	}  	if (lineMaxSubord > lineParent) { @@ -696,6 +699,13 @@ void Document::SetStyles(int length, char *styles) {  	}  } +bool Document::EnsureStyledTo(int pos) { +	// Ask the watchers to style, and stop as soon as one responds. +	for (int i = 0; pos > GetEndStyled() && i < lenWatchers; i++) +		watchers[i].watcher->NotifyStyleNeeded(this, watchers[i].userData, pos); +	return pos <= GetEndStyled(); +} +  bool Document::AddWatcher(DocWatcher *watcher, void *userData) {  	for (int i = 0; i < lenWatchers; i++) {  		if ((watchers[i].watcher == watcher) && | 
