void area_attach(Area *a, Frame *f) { f->area = a; if(a->floating) float_attach(a, f); else column_attach(a, f); view_arrange(a->view); if(btassert("4 full", a->frame && a->sel == nil)) a->sel = a->frame; }
void area_attach(Area *a, Frame *f) { f->area = a; if(a->floating) float_attach(a, f); else column_attach(a, f); view_arrange(a->view); event("AreaAttach %s %a %#C\n", a->view->name, a, f->client); if(btassert("4 full", a->frame && a->sel == nil)) a->sel = a->frame; }
static void column_scale(Area *a) { Frame *f; uint dy; uint ncol, nuncol; uint colh; int surplus; if(!a->frame) return; column_fit(a, &ncol, &nuncol); colh = labelh(def.font); if(a->max && !resizing) colh = 0; dy = 0; surplus = Dy(a->r); for(f=a->frame; f; f=f->anext) { if(f->collapsed) f->colr.max.y = f->colr.min.y + colh; else if(Dy(f->colr) == 0) f->colr.max.y++; surplus -= Dy(f->colr); if(!f->collapsed) dy += Dy(f->colr); } for(f=a->frame; f; f=f->anext) { f->dy = Dy(f->colr); f->colr.min.x = a->r.min.x; f->colr.max.x = a->r.max.x; if(!f->collapsed) f->colr.max.y += ((float)f->dy / dy) * surplus; if(btassert("6 full", !(f->collapsed ? Dy(f->r) >= 0 : dy > 0))) warning("Something's f****d: %s:%d:%s()", __FILE__, __LINE__, __func__); frame_resize(f, f->colr); } if(def.incmode == ISqueeze && !resizing) column_squeeze(a); column_settle(a); }