diff options
| -rw-r--r-- | src/CellBuffer.cxx | 5 | ||||
| -rw-r--r-- | src/CellBuffer.h | 1 | ||||
| -rw-r--r-- | src/Document.cxx | 7 | ||||
| -rw-r--r-- | src/Document.h | 1 | ||||
| -rw-r--r-- | src/PerLine.cxx | 16 | ||||
| -rw-r--r-- | src/PerLine.h | 4 | 
6 files changed, 33 insertions, 1 deletions
| diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 1db0d7d0a..7134d3188 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -21,7 +21,7 @@  using namespace Scintilla;  #endif -LineVector::LineVector() : starts(256) { +LineVector::LineVector() : starts(256), perLine(0) {  	Init();  } @@ -31,6 +31,9 @@ LineVector::~LineVector() {  void LineVector::Init() {  	starts.DeleteAll(); +	if (perLine) { +		perLine->Init(); +	}  }  void LineVector::SetPerLine(PerLine *pl) { diff --git a/src/CellBuffer.h b/src/CellBuffer.h index 5af135736..336dfb4df 100644 --- a/src/CellBuffer.h +++ b/src/CellBuffer.h @@ -16,6 +16,7 @@ namespace Scintilla {  class PerLine {  public:  	virtual ~PerLine() {} +	virtual void Init()=0;  	virtual void InsertLine(int)=0;  	virtual void RemoveLine(int)=0;  }; diff --git a/src/Document.cxx b/src/Document.cxx index ac37215b2..c71f840b6 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -100,6 +100,13 @@ Document::~Document() {  	regex = 0;  } +void Document::Init() { +	for (int j=0; j<ldSize; j++) { +		if (perLineData[j]) +			perLineData[j]->Init(); +	} +} +  void Document::InsertLine(int line) {  	for (int j=0; j<ldSize; j++) {  		if (perLineData[j]) diff --git a/src/Document.h b/src/Document.h index 6ff6c2d71..19840315c 100644 --- a/src/Document.h +++ b/src/Document.h @@ -175,6 +175,7 @@ public:  	int AddRef();  	int Release(); +	virtual void Init();  	virtual void InsertLine(int line);  	virtual void RemoveLine(int line); diff --git a/src/PerLine.cxx b/src/PerLine.cxx index 466d2fb31..5408c0258 100644 --- a/src/PerLine.cxx +++ b/src/PerLine.cxx @@ -125,6 +125,10 @@ void MarkerHandleSet::CombineWith(MarkerHandleSet *other) {  }  LineMarkers::~LineMarkers() { +	Init(); +} + +void LineMarkers::Init() {  	for (int line = 0; line < markers.Length(); line++) {  		delete markers[line];  		markers[line] = 0; @@ -227,6 +231,10 @@ void LineMarkers::DeleteMarkFromHandle(int markerHandle) {  LineLevels::~LineLevels() {  } +void LineLevels::Init() { +	levels.DeleteAll(); +} +  void LineLevels::InsertLine(int line) {  	if (levels.Length()) {  		int level = SC_FOLDLEVELBASE; @@ -281,6 +289,10 @@ int LineLevels::GetLevel(int line) {  LineState::~LineState() {  } +void LineState::Init() { +	lineStates.DeleteAll(); +} +  void LineState::InsertLine(int line) {  	if (lineStates.Length()) {  		lineStates.EnsureLength(line); @@ -339,6 +351,10 @@ LineAnnotation::~LineAnnotation() {  	ClearAll();  } +void LineAnnotation::Init() { +	ClearAll(); +} +  void LineAnnotation::InsertLine(int line) {  	if (annotations.Length()) {  		annotations.Insert(line, 0); diff --git a/src/PerLine.h b/src/PerLine.h index 8f3368b82..ab34c46fe 100644 --- a/src/PerLine.h +++ b/src/PerLine.h @@ -49,6 +49,7 @@ public:  	LineMarkers() : handleCurrent(0) {  	}  	virtual ~LineMarkers(); +	virtual void Init();  	virtual void InsertLine(int line);  	virtual void RemoveLine(int line); @@ -64,6 +65,7 @@ class LineLevels : public PerLine {  	SplitVector<int> levels;  public:  	virtual ~LineLevels(); +	virtual void Init();  	virtual void InsertLine(int line);  	virtual void RemoveLine(int line); @@ -79,6 +81,7 @@ public:  	LineState() {  	}  	virtual ~LineState(); +	virtual void Init();  	virtual void InsertLine(int line);  	virtual void RemoveLine(int line); @@ -93,6 +96,7 @@ public:  	LineAnnotation() {  	}  	virtual ~LineAnnotation(); +	virtual void Init();  	virtual void InsertLine(int line);  	virtual void RemoveLine(int line); | 
