Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 1307 → Rev 1308

/sved/trunk/sved.c
245,6 → 245,22
}
 
 
static void cursor_right(struct linedb *db, unsigned char *cursorposx, unsigned char *cursorposy, unsigned char screenw, unsigned char screenh, unsigned char *uidirtyfrom, unsigned char *uidirtyto) {
if (db->cursor->len > db->xoffset + *cursorposx) {
if (*cursorposx < screenw - 2) {
*cursorposx += 1;
} else {
db->xoffset += 1;
*uidirtyfrom = 0;
*uidirtyto = 0xff;
}
} else {
cursor_down(db, cursorposy, screenh, uidirtyfrom, uidirtyto);
cursor_home(db, cursorposx, uidirtyfrom, uidirtyto);
}
}
 
 
static void del(struct linedb *db, unsigned char cursorposx, unsigned char cursorposy, unsigned char *uidirtyfrom, unsigned char *uidirtyto) {
if (cursorposx + db->xoffset < db->cursor->len) {
_fmemmove(db->cursor->payload + cursorposx + db->xoffset, db->cursor->payload + cursorposx + db->xoffset + 1, db->cursor->len - cursorposx - db->xoffset);
409,18 → 425,7
cursor_up(&db, &cursorposy, &uidirtyfrom, &uidirtyto);
 
} else if (k == 0x14D) { /* right */
if (db.cursor->len > db.xoffset + cursorposx) {
if (cursorposx < screenw - 2) {
cursorposx++;
} else {
db.xoffset++;
uidirtyfrom = 0;
uidirtyto = 0xff;
}
} else {
cursor_down(&db, &cursorposy, screenh, &uidirtyfrom, &uidirtyto);
cursor_home(&db, &cursorposx, &uidirtyfrom, &uidirtyto);
}
cursor_right(&db, &cursorposx, &cursorposy, screenw, screenh, &uidirtyfrom, &uidirtyto);
 
} else if (k == 0x14B) { /* left */
cursor_left(&db, &cursorposx, &cursorposy, screenw, &uidirtyfrom, &uidirtyto);
466,6 → 471,23
} else if (k == 0x008) { /* BKSPC */
bkspc(&db, &cursorposx, &cursorposy, screenw, &uidirtyfrom, &uidirtyto);
 
} else if ((k >= 0x20) && (k <= 0xff)) { /* "normal" character */
struct line far *n;
n = _frealloc(db.cursor, sizeof(struct line) + db.cursor->len);
if (n != NULL) {
unsigned short off = db.xoffset + cursorposx;
if (n->prev) n->prev->next = n;
if (n->next) n->next->prev = n;
if (db.topscreen == db.cursor) db.topscreen = n;
db.cursor = n;
_fmemmove(db.cursor->payload + off + 1, db.cursor->payload + off, db.cursor->len - off + 1);
db.cursor->len += 1;
uidirtyfrom = cursorposy;
uidirtyto = cursorposy;
db.cursor->payload[off] = k;
cursor_right(&db, &cursorposx, &cursorposy, screenw, screenh, &uidirtyfrom, &uidirtyto);
}
 
} else { /* UNHANDLED KEY - TODO IGNORE THIS IN PRODUCTION RELEASE */
char buff[4];
const char *HEX = "0123456789ABCDEF";