#include #ifdef OLD_STYLE int FASTCALL kd_clist(dmJi, e2Bgdy) DFORMPTR dmJi; EVENTPTR e2Bgdy; #else int FASTCALL kd_clist(DFORMPTR dmJi, EVENTPTR e2Bgdy) #endif { int rlQoKu = 1; WINDOWPTR mlJhu5KX = (WINDOWPTR) NULLP; int rlQVYmB; DFIELDPTR fsAi; CLISTPTR clistp; MFILEPTR mfp; WINDOWPTR fthpXy; WINDOWPTR cshpXy; SRPTR syM; UCHAR * editbufp; int syhYVm; UCHAR * kwdp; UCHAR * coLbMnJaO; WINDOW tlJiu5K; #ifndef NO_DEBUG_CODE static UCHAR fn[] = "kd_clist"; #endif fsAi = (DFIELDPTR) curfldp(dmJi); if (_i_ismemofld(fsAi)) mlJhu5KX = ((MEMOPTR)fsAi)->wnp; clistp = fsAi->clistp; if (clistp && clistp->wnp->mfp) { k_nextact(AC_CONTINUE, clistp); clistp->parentp = (PTR) dmJi; mfp = clistp->wnp->mfp; kwdp = clistp->kwdp; fthpXy = dmJi->wnp; cshpXy = clistp->wnp; if (!mf_kwdset(clistp->kwdp, mfp) || mfp->vln_q <= 0) { VAL_ERR = NO_CHOICE; goto CSm48dx; } if ((coLbMnJaO = vv_infomsg(EXCLISTMSG))) if (!(*coLbMnJaO)) coLbMnJaO = (UCHAR *) NULLP; _cl_coord(clistp); if (coLbMnJaO) { if (!_wn_dupstruc(&tlJiu5K, dmJi->msg_wnp)) goto CSm48dx; tlJiu5K.storp = (UCHAR *) NULLP; tlJiu5K.flags &= ~(SET | HEAP_WN); if (!wn_msmod(&tlJiu5K)) goto CSm48dx; v_st(coLbMnJaO, &tlJiu5K); wn_up(&tlJiu5K); } clistp->fm_help = dmJi->help; if (mlJhu5KX) clistp->len = min (mfp->fmaxcol, mlJhu5KX->mfp->fmaxcol); else clistp->len = fsAi->len; VAL_ERRLAST = 0; rlQVYmB = cl_proc(clistp->itemnum, clistp); if (coLbMnJaO) { if (wn_isup(&tlJiu5K)) wn_dn(&tlJiu5K); wn_free(&tlJiu5K); } if (rlQVYmB == 0) { VAL_ERR = ty8gcIBZZjLWO(VV_ERR, CG3Ozaz, TG346Nz_); VV_ERR = 0; } else if (rlQVYmB == AC_EXIT) { if (mlJhu5KX) { editbufp = mlJhu5KX->mfp->farray[0]->line_st; cl_curtxt(editbufp, clistp); fld_upd(editbufp, *(dmJi->item_arrayp + dmJi->cur_item), dmJi); wn_updrgn(mlJhu5KX->rb, mlJhu5KX->cb, mlJhu5KX->re, mlJhu5KX->ce, dmJi->wnp); } else { editbufp = fsAi->editbufp; cl_curtxt(editbufp, clistp); st_padblank(editbufp, fsAi->len); v_stattnop(fsAi->rb, fsAi->cb, editbufp, fsAi->act_att, fsAi->len, STATT, fthpXy); } fsAi->flags |= FLDALTERED; fsAi->flags &= ~FLDVALID; dmJi->flags |= FMALTERED; dmJi->flags &= ~FMVALID; } if (rlQVYmB == AC_QUIT) sfm_nextitem(AC_CONTINUE, dmJi); else if (rlQVYmB && (clistp->flags & CLAUTOMOVE)) { if (dmJi->cur_item == dmJi->itemq - 1 && !(dmJi->flags & FMWRAP) && !(dmJi->flags & AUTOEXIT)) sfm_nextitem(AC_CONTINUE, dmJi); else if (dmJi->cur_item == 0) sfm_nextitem(AC_NEXTITEM, dmJi); else { if (syM = cursrp(dmJi)) { syhYVm = syM->cur_item + 1; if (syhYVm < (syM->datarowq - syM->first_visrow) * syM->datacolq) ssr_nextpos(syhYVm / syM->datacolq + syM->first_visrow, syhYVm % syM->datacolq, syM); } { if (clistp->flags & CLPOP) sfm_nextitem(AC_SAMEDIR, dmJi); else sfm_nextitem(AC_NEXTITEM, dmJi); } } } CSm48dx: if (kwdp && !mf_kwdset(kwdp, mfp)) rlQoKu = 0; } else VAL_ERR = NO_CHOICE; return(rlQoKu); }