void tkunmap(Tk *tk) { TkTop *t; TkCtxt *c; while(tk->master) tk = tk->master; if((tk->flag & Tkmapped) == 0) return; t = tk->env->top; c = t->ctxt; if(tkischild(tk, c->mgrab)) tksetmgrab(t, nil); if(tkischild(tk, c->entered)){ tkdeliver(c->entered, TkLeave, nil); c->entered = nil; } if(tk == t->root) tksetglobalfocus(t, 0); tk->flag &= ~(Tkmapped|Tksuspended); tkdestroywinimage(tk); tkdeliver(tk, TkUnmap, nil); tkenterleave(t); /* XXX should unmap menus too */ }
void tkrunpack(TkTop *t) { Tk *tk; int done; while(packorder != nil) { tk = packorder->t; if (tk->grid != nil) done = tkgridder(tk); else done = tkpacker(tk); if (done) tkpackqrm(tk); } tkenterleave(t); tkdirtyfocusorder(t); }