WPHolder *groupws_prepare_manage_transient(WGroupWS *ws, const WClientWin *cwin, const WManageParams *param, int UNUSED(unused)) { WGroupAttachParams ap=GROUPATTACHPARAMS_INIT; WFramedParam fp=FRAMEDPARAM_INIT; WPHolder *ph; ap.stack_above=OBJ_CAST(REGION_PARENT(param->tfor), WRegion); if(ap.stack_above==NULL) return NULL; fp.inner_geom_gravity_set=TRUE; fp.inner_geom=param->geom; fp.gravity=param->gravity; fp.mode=FRAME_MODE_TRANSIENT; groupattachparams_get(&ap, cwin->proptab, "attach_params"); if(!ap.geom_weak_set || param->userpos || !param->maprq || ioncore_g.opmode==IONCORE_OPMODE_INIT){ ap.geom_weak_set=1; ap.geom_weak=0; } ph=(WPHolder*)create_grouppholder(&ws->grp, NULL, &ap); return pholder_either((WPHolder*)create_framedpholder(ph, &fp), ph); }
static WPHolder *groupws_do_prepare_manage(WGroupWS *ws, const WClientWin *cwin, const WManageParams *param) { WGroupAttachParams ap=GROUPATTACHPARAMS_INIT; WFramedParam fp=FRAMEDPARAM_INIT; WPHolder *ph; fp.inner_geom_gravity_set=TRUE; fp.inner_geom=param->geom; fp.gravity=param->gravity; groupattachparams_get(&ap, cwin->proptab, "attach_params"); if(param->userpos || !param->maprq || ioncore_g.opmode==IONCORE_OPMODE_INIT){ ap.geom_weak_set=1; ap.geom_weak=0; }else if(!ap.geom_weak_set){ ap.geom_weak_set=1; ap.geom_weak=REGION_RQGEOM_WEAK_X|REGION_RQGEOM_WEAK_Y; } ph=(WPHolder*)create_grouppholder(&ws->grp, NULL, &ap); if(ph!=NULL) ph=pholder_either((WPHolder*)create_framedpholder(ph, &fp), ph); if(ph!=NULL){ WGroupPHolder *gph; WGroupAttachParams gp=GROUPATTACHPARAMS_INIT; gp.switchto_set=1; gp.switchto=1; gp.bottom=1; gph=create_grouppholder(NULL, NULL, &gp); if(gph!=NULL){ gph->recreate_pholder=ph; return (WPHolder*)gph; } } return ph; }
WGroupPHolder *group_managed_get_pholder(WGroup *ws, WRegion *mgd) { WStacking *st=group_find_stacking(ws, mgd); if(mgd==NULL) return NULL; else return create_grouppholder(ws, st, NULL); }