summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>1998-11-10 14:40:56 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>1998-11-10 14:40:56 +0000
commit3ad63de2bf9443990b2c6bb50d4afc11a28272ce (patch)
treeed58d381c5811d8c41fd80326a2ae2e17dced609 /src
parenta7dbe1ff3d427b8c48f42c1ede596266028cea57 (diff)
Fl_Input patch from Bill.
git-svn-id: file:///fltk/svn/fltk/trunk@83 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Input_.cxx22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/Fl_Input_.cxx b/src/Fl_Input_.cxx
index 03757935f..eec57746e 100644
--- a/src/Fl_Input_.cxx
+++ b/src/Fl_Input_.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Input_.cxx,v 1.6 1998/11/06 20:14:41 mike Exp $"
+// "$Id: Fl_Input_.cxx,v 1.7 1998/11/10 14:40:56 mike Exp $"
//
// Common input widget routines for the Fast Light Tool Kit (FLTK).
//
@@ -504,16 +504,15 @@ int Fl_Input_::replace(int b, int e, const char* text, int ilen) {
}
if (ilen) {
- size_ += ilen;
if (undowidget == this && b == undoat)
undoinsert += ilen;
else {
undocut = 0;
undoinsert = ilen;
}
- int i;
- for (i=size_; i>b; i--) buffer[i] = buffer[i-ilen];
- for (i=0; i<ilen; i++) buffer[b+i] = text[i];
+ memcpy(buffer+b+ilen, buffer+b, size_-b+1);
+ memcpy(buffer+b, text, ilen);
+ size_ += ilen;
}
undowidget = this;
mark_ = position_ = undoat = b+ilen;
@@ -535,10 +534,10 @@ int Fl_Input_::undo() {
put_in_buffer(size_+ilen);
if (ilen) {
+ memcpy(buffer+b+ilen, buffer+b, size_-b+1);
+ memcpy(buffer+b, undobuffer, ilen);
size_ += ilen;
- int i;
- for (i=size_; i>b; i--) buffer[i] = buffer[i-ilen];
- for (i=0; i<ilen; i++) buffer[b++] = undobuffer[i];
+ b += ilen;
}
if (xlen) {
@@ -647,7 +646,10 @@ Fl_Input_::Fl_Input_(int x, int y, int w, int h, const char* l)
}
void Fl_Input_::put_in_buffer(int len) {
- if (value_ == buffer && bufsize > len) return;
+ if (value_ == buffer && bufsize > len) {
+ buffer[size_] = 0;
+ return;
+ }
if (!bufsize) {
if (len > size_) len += 9; // let a few characters insert before realloc
bufsize = len+1;
@@ -725,5 +727,5 @@ Fl_Input_::~Fl_Input_() {
}
//
-// End of "$Id: Fl_Input_.cxx,v 1.6 1998/11/06 20:14:41 mike Exp $".
+// End of "$Id: Fl_Input_.cxx,v 1.7 1998/11/10 14:40:56 mike Exp $".
//