diff options
Diffstat (limited to 'src/ContractionState.cxx')
-rw-r--r-- | src/ContractionState.cxx | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx index 6fca2ec4e..c56c5647b 100644 --- a/src/ContractionState.cxx +++ b/src/ContractionState.cxx @@ -17,6 +17,7 @@ #include "Platform.h" #include "Position.h" +#include "UniqueString.h" #include "SplitVector.h" #include "Partitioning.h" #include "RunStyles.h" @@ -39,7 +40,7 @@ void ContractionState::EnsureData() { visible.reset(new RunStyles()); expanded.reset(new RunStyles()); heights.reset(new RunStyles()); - foldDisplayTexts.reset(new SparseVector<const char *>()); + foldDisplayTexts.reset(new SparseVector<UniqueString>()); displayLines.reset(new Partitioning(4)); InsertLines(0, linesInDocument); } @@ -111,7 +112,7 @@ void ContractionState::InsertLine(Sci::Line lineDoc) { heights->InsertSpace(lineDoc, 1); heights->SetValueAt(lineDoc, 1); foldDisplayTexts->InsertSpace(lineDoc, 1); - foldDisplayTexts->SetValueAt(lineDoc, NULL); + foldDisplayTexts->SetValueAt(lineDoc, nullptr); Sci::Line lineDisplay = DisplayFromDoc(lineDoc); displayLines->InsertPartition(lineDoc, lineDisplay); displayLines->InsertText(lineDoc, 1); @@ -191,14 +192,14 @@ bool ContractionState::HiddenLines() const { const char *ContractionState::GetFoldDisplayText(Sci::Line lineDoc) const { Check(); - return foldDisplayTexts->ValueAt(lineDoc); + return foldDisplayTexts->ValueAt(lineDoc).get(); } bool ContractionState::SetFoldDisplayText(Sci::Line lineDoc, const char *text) { EnsureData(); - const char *foldText = foldDisplayTexts->ValueAt(lineDoc); - if (!foldText || 0 != strcmp(text, foldText)) { - foldDisplayTexts->SetValueAt(lineDoc, text); + const char *foldText = foldDisplayTexts->ValueAt(lineDoc).get(); + if (!foldText || !text || 0 != strcmp(text, foldText)) { + foldDisplayTexts->SetValueAt(lineDoc, UniqueStringCopy(text)); Check(); return true; } else { |