diff --git a/src/lib/direct.c b/src/lib/direct.c index 0f09efd3a..944a90205 100644 --- a/src/lib/direct.c +++ b/src/lib/direct.c @@ -1011,9 +1011,13 @@ char* ncdirect_readline(ncdirect* n, const char* prompt){ } --wpos; }else if(id == NCKEY_LEFT){ - if(wpos){ - --wpos; - } + --wpos; + }else if(id == NCKEY_RIGHT){ + ++wpos; + }else if(id == NCKEY_UP){ + wpos -= dimx; + }else if(id == NCKEY_DOWN){ + wpos += dimx; }else{ if(wspace - 1 < wused){ wspace += BUFSIZ; @@ -1050,6 +1054,11 @@ char* ncdirect_readline(ncdirect* n, const char* prompt){ bline = y; } } + if(wpos < 0){ + wpos = 0; + }else if(wpos > wused - 1){ + wpos = wused - 1; + } // clear to end of line(s) const char* el = get_escape(&n->tcache, ESCAPE_EL); for(int i = bline ; i >= tline ; --i){