aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ContractionState.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ContractionState.cxx')
-rw-r--r--src/ContractionState.cxx13
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 {