aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
authornyamatongwe <unknown>2005-02-04 10:59:54 +0000
committernyamatongwe <unknown>2005-02-04 10:59:54 +0000
commitec099a9f83f1eb631cee326a02c653b79bdc72a8 (patch)
tree80402e60d9b4f9a417266f788abf4459d05f8512 /src/Document.cxx
parent58bd4b55159522d4fc1476bf6d515e9c995ed604 (diff)
downloadscintilla-mirror-ec099a9f83f1eb631cee326a02c653b79bdc72a8.tar.gz
Avoid performing any actions when inserting a 0 length string.
Added an undo action around setting line indenation so it is undone together.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 27363d6e9..87a101822 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -524,15 +524,17 @@ bool Document::InsertString(int position, const char *s) {
*/
bool Document::InsertString(int position, const char *s, size_t insertLength) {
bool changed = false;
- 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;
+ 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;
}
- changed = InsertStyledString(position*2, sWithStyle,
- static_cast<int>(insertLength*2));
- delete []sWithStyle;
}
return changed;
}
@@ -611,8 +613,10 @@ void Document::SetLineIndentation(int line, int indent) {
CreateIndentation(linebuf, sizeof(linebuf), indent, tabInChars, !useTabs);
int thisLineStart = LineStart(line);
int indentPos = GetLineIndentPosition(line);
+ BeginUndoAction();
DeleteChars(thisLineStart, indentPos - thisLineStart);
InsertString(thisLineStart, linebuf);
+ EndUndoAction();
}
}