mirror of
https://github.com/dankamongmen/notcurses.git
synced 2024-11-20 03:25:47 +00:00
selector: trans out bg cells #627
This commit is contained in:
parent
48ca4286d7
commit
3b254c6787
@ -79,17 +79,27 @@ ncselector_draw(ncselector* n){
|
|||||||
if(n->title){
|
if(n->title){
|
||||||
size_t riserwidth = n->titlecols + 4;
|
size_t riserwidth = n->titlecols + 4;
|
||||||
int offx = ncplane_align(n->ncp, NCALIGN_RIGHT, riserwidth);
|
int offx = ncplane_align(n->ncp, NCALIGN_RIGHT, riserwidth);
|
||||||
|
ncplane_cursor_move_yx(n->ncp, 0, 0);
|
||||||
|
ncplane_hline(n->ncp, &transchar, offx);
|
||||||
ncplane_cursor_move_yx(n->ncp, 0, offx);
|
ncplane_cursor_move_yx(n->ncp, 0, offx);
|
||||||
ncplane_rounded_box_sized(n->ncp, 0, n->boxchannels, 3, riserwidth, 0);
|
ncplane_rounded_box_sized(n->ncp, 0, n->boxchannels, 3, riserwidth, 0);
|
||||||
n->ncp->channels = n->titlechannels;
|
n->ncp->channels = n->titlechannels;
|
||||||
ncplane_printf_yx(n->ncp, 1, offx + 1, " %s ", n->title);
|
ncplane_printf_yx(n->ncp, 1, offx + 1, " %s ", n->title);
|
||||||
yoff += 2;
|
yoff += 2;
|
||||||
|
ncplane_cursor_move_yx(n->ncp, 1, 0);
|
||||||
|
ncplane_hline(n->ncp, &transchar, offx);
|
||||||
}
|
}
|
||||||
int bodywidth = ncselector_body_width(n);
|
int bodywidth = ncselector_body_width(n);
|
||||||
int xoff = ncplane_align(n->ncp, NCALIGN_RIGHT, bodywidth);
|
|
||||||
ncplane_cursor_move_yx(n->ncp, yoff, xoff);
|
|
||||||
int dimy, dimx;
|
int dimy, dimx;
|
||||||
ncplane_dim_yx(n->ncp, &dimy, &dimx);
|
ncplane_dim_yx(n->ncp, &dimy, &dimx);
|
||||||
|
int xoff = ncplane_align(n->ncp, NCALIGN_RIGHT, bodywidth);
|
||||||
|
if(xoff){
|
||||||
|
for(int y = yoff + 1 ; y < dimy ; ++y){
|
||||||
|
ncplane_cursor_move_yx(n->ncp, y, 0);
|
||||||
|
ncplane_hline(n->ncp, &transchar, xoff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ncplane_cursor_move_yx(n->ncp, yoff, xoff);
|
||||||
ncplane_rounded_box_sized(n->ncp, 0, n->boxchannels, dimy - yoff, bodywidth, 0);
|
ncplane_rounded_box_sized(n->ncp, 0, n->boxchannels, dimy - yoff, bodywidth, 0);
|
||||||
if(n->title){
|
if(n->title){
|
||||||
n->ncp->channels = n->boxchannels;
|
n->ncp->channels = n->boxchannels;
|
||||||
@ -135,7 +145,8 @@ ncselector_draw(ncselector* n){
|
|||||||
++yoff;
|
++yoff;
|
||||||
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
||||||
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
||||||
ncplane_putc(n->ncp, &transchar);
|
cell transc = CELL_TRIVIAL_INITIALIZER; // fall back to base cell
|
||||||
|
ncplane_putc(n->ncp, &transc);
|
||||||
}
|
}
|
||||||
const int bodyoffset = dimx - bodywidth + 2;
|
const int bodyoffset = dimx - bodywidth + 2;
|
||||||
if(n->maxdisplay && n->maxdisplay < n->itemcount){
|
if(n->maxdisplay && n->maxdisplay < n->itemcount){
|
||||||
@ -158,7 +169,8 @@ ncselector_draw(ncselector* n){
|
|||||||
}
|
}
|
||||||
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
||||||
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
||||||
ncplane_putc(n->ncp, &transchar);
|
cell transc = CELL_TRIVIAL_INITIALIZER; // fall back to base cell
|
||||||
|
ncplane_putc(n->ncp, &transc);
|
||||||
}
|
}
|
||||||
n->ncp->channels = n->opchannels;
|
n->ncp->channels = n->opchannels;
|
||||||
if(printidx == n->selected){
|
if(printidx == n->selected){
|
||||||
@ -178,7 +190,8 @@ ncselector_draw(ncselector* n){
|
|||||||
// Bottom line of body (background and possibly down arrow)
|
// Bottom line of body (background and possibly down arrow)
|
||||||
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
ncplane_cursor_move_yx(n->ncp, yoff, xoff + 1);
|
||||||
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
for(int i = xoff + 1 ; i < dimx - 1 ; ++i){
|
||||||
ncplane_putc(n->ncp, &transchar);
|
cell transc = CELL_TRIVIAL_INITIALIZER; // fall back to base cell
|
||||||
|
ncplane_putc(n->ncp, &transc);
|
||||||
}
|
}
|
||||||
if(n->maxdisplay && n->maxdisplay < n->itemcount){
|
if(n->maxdisplay && n->maxdisplay < n->itemcount){
|
||||||
n->ncp->channels = n->descchannels;
|
n->ncp->channels = n->descchannels;
|
||||||
@ -279,7 +292,8 @@ ncselector* ncselector_create(ncplane* n, const ncselector_options* opts){
|
|||||||
ns->longop = cols;
|
ns->longop = cols;
|
||||||
}
|
}
|
||||||
cols = mbswidth(src->desc);
|
cols = mbswidth(src->desc);
|
||||||
ns->items[ns->itemcount].desccolumns = cols; if(cols > ns->longdesc){
|
ns->items[ns->itemcount].desccolumns = cols;
|
||||||
|
if(cols > ns->longdesc){
|
||||||
ns->longdesc = cols;
|
ns->longdesc = cols;
|
||||||
}
|
}
|
||||||
ns->items[ns->itemcount].option = strdup(src->option);
|
ns->items[ns->itemcount].option = strdup(src->option);
|
||||||
|
Loading…
Reference in New Issue
Block a user