reader: handle rightmost column in absence of scrolling #994

pull/1005/head
nick black 4 years ago
parent 806e604e58
commit d54b322365
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -119,6 +119,7 @@ int ncreader_move_left(ncreader* n){
ncplane_cursor_move_yx(n->textarea, y, textx);
ncplane_cursor_move_yx(n->ncp, y, viewx);
//fprintf(stderr, "moved left: tcurs: %dx%d vcurs: %dx%d xproj: %d\n", y, textx, y, viewx, n->xproject);
ncreader_redraw(n);
return 0;
}
@ -155,6 +156,7 @@ int ncreader_move_right(ncreader* n){
ncplane_cursor_move_yx(n->textarea, y, textx);
ncplane_cursor_move_yx(n->ncp, y, viewx);
//fprintf(stderr, "moved right: tcurs: %dx%d vcurs: %dx%d xproj: %d\n", y, textx, y, viewx, n->xproject);
ncreader_redraw(n);
return 0;
}
@ -169,6 +171,7 @@ int ncreader_move_up(ncreader* n){
--y;
ncplane_cursor_move_yx(n->textarea, y, -1);
ncplane_cursor_move_yx(n->ncp, y, -1);
ncreader_redraw(n);
return 0;
}
@ -183,6 +186,7 @@ int ncreader_move_down(ncreader* n){
++y;
ncplane_cursor_move_yx(n->textarea, y, -1);
ncplane_cursor_move_yx(n->ncp, y, -1);
ncreader_redraw(n);
return 0;
}
@ -210,10 +214,15 @@ int ncreader_write_egc(ncreader* n, const char* egc){
if(ncplane_putegc(n->ncp, egc, NULL) < 0){
return -1;
}
if(n->ncp->x >= n->ncp->lenx){
n->ncp->x = n->ncp->lenx - 1;
if(n->textarea->x >= n->textarea->lenx - cols){
if(!n->horscroll){
n->textarea->x = n->textarea->lenx - cols;
}
}
if(n->ncp->x >= n->ncp->lenx - cols){
n->ncp->x = n->ncp->lenx - cols;
}
ncreader_redraw(n);
return 0;
}
@ -254,19 +263,15 @@ bool ncreader_offer_input(ncreader* n, const ncinput* ni){
// general ncplane_cursor_{left, right, up, down}()
if(ni->id == NCKEY_LEFT){
ncreader_move_left(n);
ncreader_redraw(n);
return true;
}else if(ni->id == NCKEY_RIGHT){
ncreader_move_right(n);
ncreader_redraw(n);
return true;
}else if(ni->id == NCKEY_UP){
ncreader_move_up(n);
ncreader_redraw(n);
return true;
}else if(ni->id == NCKEY_DOWN){
ncreader_move_down(n);
ncreader_redraw(n);
return true;
}else if(nckey_supppuab_p(ni->id)){
return false;
@ -276,7 +281,6 @@ bool ncreader_offer_input(ncreader* n, const ncinput* ni){
// FIXME breaks for wint_t < 32bits
if(snprintf(wbuf, sizeof(wbuf), "%lc", (wint_t)ni->id) < (int)sizeof(wbuf)){
ncreader_write_egc(n, wbuf);
ncreader_redraw(n);
}
return true;
}

Loading…
Cancel
Save