diff options
Diffstat (limited to 'src/CellBuffer.cxx')
| -rw-r--r-- | src/CellBuffer.cxx | 27 | 
1 files changed, 22 insertions, 5 deletions
| diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 1884a497a..513c9a9b8 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -342,7 +342,8 @@ void UndoHistory::CompletedRedoStep() {  	currentAction++;  } -CellBuffer::CellBuffer() { +CellBuffer::CellBuffer(bool hasStyles_) : +	hasStyles(hasStyles_) {  	readOnly = false;  	utf8LineEnds = 0;  	collectingUndo = true; @@ -369,7 +370,7 @@ void CellBuffer::GetCharRange(char *buffer, Sci::Position position, Sci::Positio  }  char CellBuffer::StyleAt(Sci::Position position) const { -	return style.ValueAt(position); +	return hasStyles ? style.ValueAt(position) : 0;  }  void CellBuffer::GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const { @@ -377,6 +378,10 @@ void CellBuffer::GetStyleRange(unsigned char *buffer, Sci::Position position, Sc  		return;  	if (position < 0)  		return; +	if (!hasStyles) { +		std::fill(buffer, buffer + lengthRetrieve, static_cast<unsigned char>(0)); +		return; +	}  	if ((position + lengthRetrieve) > style.Length()) {  		Platform::DebugPrintf("Bad GetStyleRange %d for %d of %d\n", position,  		                      lengthRetrieve, style.Length()); @@ -414,6 +419,9 @@ const char *CellBuffer::InsertString(Sci::Position position, const char *s, Sci:  }  bool CellBuffer::SetStyleAt(Sci::Position position, char styleValue) { +	if (!hasStyles) { +		return false; +	}  	const char curVal = style.ValueAt(position);  	if (curVal != styleValue) {  		style.SetValueAt(position, styleValue); @@ -424,6 +432,9 @@ bool CellBuffer::SetStyleAt(Sci::Position position, char styleValue) {  }  bool CellBuffer::SetStyleFor(Sci::Position position, Sci::Position lengthStyle, char styleValue) { +	if (!hasStyles) { +		return false; +	}  	bool changed = false;  	PLATFORM_ASSERT(lengthStyle == 0 ||  		(lengthStyle > 0 && lengthStyle + position <= style.Length())); @@ -462,7 +473,9 @@ Sci::Position CellBuffer::Length() const {  void CellBuffer::Allocate(Sci::Position newSize) {  	substance.ReAllocate(newSize); -	style.ReAllocate(newSize); +	if (hasStyles) { +		style.ReAllocate(newSize); +	}  }  void CellBuffer::SetLineEndTypes(int utf8LineEnds_) { @@ -608,7 +621,9 @@ void CellBuffer::BasicInsertString(Sci::Position position, const char *s, Sci::P  	}  	substance.InsertFromArray(position, s, 0, insertLength); -	style.InsertValue(position, insertLength, 0); +	if (hasStyles) { +		style.InsertValue(position, insertLength, 0); +	}  	Sci::Line lineInsert = lv.LineFromPosition(position) + 1;  	bool atLineStart = lv.LineStart(lineInsert-1) == position; @@ -738,7 +753,9 @@ void CellBuffer::BasicDeleteChars(Sci::Position position, Sci::Position deleteLe  		}  	}  	substance.DeleteRange(position, deleteLength); -	style.DeleteRange(position, deleteLength); +	if (hasStyles) { +		style.DeleteRange(position, deleteLength); +	}  }  bool CellBuffer::SetUndoCollection(bool collectUndo) { | 
