aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx47
1 files changed, 14 insertions, 33 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 2e21cfe7b..6e8d2cc44 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -360,10 +360,9 @@ void Document::CheckReadOnly() {
}
}
-// Document only modified by gateways DeleteChars, InsertStyledString, Undo, Redo, and SetStyleAt.
+// Document only modified by gateways DeleteChars, InsertString, Undo, Redo, and SetStyleAt.
// SetStyleAt does not change the persistent state of a document
-// Unlike Undo, Redo, and InsertStyledString, the pos argument is a cell number not a char number
bool Document::DeleteChars(int pos, int len) {
if (len == 0)
return false;
@@ -383,7 +382,7 @@ bool Document::DeleteChars(int pos, int len) {
int prevLinesTotal = LinesTotal();
bool startSavePoint = cb.IsSavePoint();
bool startSequence = false;
- const char *text = cb.DeleteChars(pos * 2, len * 2, startSequence);
+ const char *text = cb.DeleteChars(pos, len, startSequence);
if (startSavePoint && cb.IsCollectingUndo())
NotifySavePoint(!startSavePoint);
if ((pos < Length()) || (pos == 0))
@@ -402,9 +401,12 @@ bool Document::DeleteChars(int pos, int len) {
}
/**
- * Insert a styled string (char/style pairs) with a length.
+ * Insert a string with a length.
*/
-bool Document::InsertStyledString(int position, char *s, int insertLength) {
+bool Document::InsertString(int position, const char *s, int insertLength) {
+ if (insertLength <= 0) {
+ return false;
+ }
CheckReadOnly();
if (enteredCount != 0) {
return false;
@@ -414,7 +416,7 @@ bool Document::InsertStyledString(int position, char *s, int insertLength) {
NotifyModified(
DocModification(
SC_MOD_BEFOREINSERT | SC_PERFORMED_USER,
- position / 2, insertLength / 2,
+ position, insertLength,
0, s));
int prevLinesTotal = LinesTotal();
bool startSavePoint = cb.IsSavePoint();
@@ -422,11 +424,11 @@ bool Document::InsertStyledString(int position, char *s, int insertLength) {
const char *text = cb.InsertString(position, s, insertLength, startSequence);
if (startSavePoint && cb.IsCollectingUndo())
NotifySavePoint(!startSavePoint);
- ModifiedAt(position / 2);
+ ModifiedAt(position);
NotifyModified(
DocModification(
SC_MOD_INSERTTEXT | SC_PERFORMED_USER | (startSequence?SC_STARTACTION:0),
- position / 2, insertLength / 2,
+ position, insertLength,
LinesTotal() - prevLinesTotal, text));
}
enteredCount--;
@@ -548,39 +550,18 @@ int Document::Redo() {
* Insert a single character.
*/
bool Document::InsertChar(int pos, char ch) {
- char chs[2];
+ char chs[1];
chs[0] = ch;
- chs[1] = 0;
- return InsertStyledString(pos*2, chs, 2);
+ return InsertString(pos, chs, 1);
}
/**
* Insert a null terminated string.
*/
-bool Document::InsertString(int position, const char *s) {
+bool Document::InsertCString(int position, const char *s) {
return InsertString(position, s, strlen(s));
}
-/**
- * Insert a string with a length.
- */
-bool Document::InsertString(int position, const char *s, size_t insertLength) {
- bool changed = false;
- if (insertLength > 0) {
- char *sWithStyle = new char[insertLength * 2];
- if (sWithStyle) {
- for (size_t i = 0; i < insertLength; i++) {
- sWithStyle[i*2] = s[i];
- sWithStyle[i*2 + 1] = 0;
- }
- changed = InsertStyledString(position*2, sWithStyle,
- static_cast<int>(insertLength*2));
- delete []sWithStyle;
- }
- }
- return changed;
-}
-
void Document::ChangeChar(int pos, char ch) {
DeleteChars(pos, 1);
InsertChar(pos, ch);
@@ -657,7 +638,7 @@ void Document::SetLineIndentation(int line, int indent) {
int indentPos = GetLineIndentPosition(line);
BeginUndoAction();
DeleteChars(thisLineStart, indentPos - thisLineStart);
- InsertString(thisLineStart, linebuf);
+ InsertCString(thisLineStart, linebuf);
EndUndoAction();
}
}