diff --git a/src/lib/notcurses.c b/src/lib/notcurses.c index 7bc7babe5..07e8b3785 100644 --- a/src/lib/notcurses.c +++ b/src/lib/notcurses.c @@ -711,6 +711,8 @@ int ncplane_resize_internal(ncplane* n, int keepy, int keepx, int keepleny, n->lenx = xlen; n->leny = ylen; free(preserved); +/*fprintf(stderr, "RESIZE COMPLETE\n"); +notcurses_debug(nc, stderr);*/ return resize_callbacks_children(n); } @@ -2420,13 +2422,13 @@ ncplane* ncplane_reparent_family(ncplane* n, ncplane* newparent){ if(n == n->boundto){ // we're a new root plane n->bnext = NULL; n->bprev = NULL; + splice_zaxis_recursive(n); pthread_mutex_lock(&ncplane_notcurses(n)->pilelock); if(ncplane_pile(n)->top == NULL){ // did we just empty our pile? ncpile_destroy(ncplane_pile(n)); } make_ncpile(ncplane_notcurses(n), n); pthread_mutex_unlock(&ncplane_notcurses(n)->pilelock); - splice_zaxis_recursive(n); }else{ // establish ourselves as a sibling of new parent's children if( (n->bnext = newparent->blist) ){ n->bnext->bprev = &n->bnext; @@ -2435,8 +2437,13 @@ ncplane* ncplane_reparent_family(ncplane* n, ncplane* newparent){ newparent->blist = n; // place it immediately above the new binding plane if crossing piles if(n->pile != ncplane_pile(n->boundto)){ - n->pile = ncplane_pile(n->boundto); splice_zaxis_recursive(n); + pthread_mutex_lock(&ncplane_notcurses(n)->pilelock); + if(ncplane_pile(n)->top == NULL){ // did we just empty our pile? + ncpile_destroy(ncplane_pile(n)); + } + pthread_mutex_unlock(&ncplane_notcurses(n)->pilelock); + n->pile = ncplane_pile(n->boundto); } } if(s){ // must be on new plane, with sprixels to donate