X-Git-Url: https://git.decadent.org.uk/gitweb/?p=ion3.git;a=blobdiff_plain;f=ioncore%2Fattach.c;h=52d09986b1fb71c2e481d552f859c4731f01e732;hp=5d81222a97663e6a1e05eba06b183cb0b818c02b;hb=f869221ce49f0fb7cca48eee28daff8684305963;hpb=720e6978185b09f2b2f60a6b96018238085a7238 diff --git a/ioncore/attach.c b/ioncore/attach.c index 5d81222..52d0998 100644 --- a/ioncore/attach.c +++ b/ioncore/attach.c @@ -116,10 +116,14 @@ static WRegion *doit_reparent(WRegion *mgr, } -static WRegion *wrap_load(WWindow *par, const WFitParams *fp, - ExtlTab *tab) +typedef struct{ + ExtlTab tab; + WPHolder **sm_ph_p; +} WLP; + +static WRegion *wrap_load(WWindow *par, const WFitParams *fp, WLP *p) { - return create_region_load(par, fp, *tab); + return create_region_load(par, fp, p->tab, p->sm_ph_p); } @@ -129,11 +133,11 @@ WRegion *ioncore_newly_created=NULL; static WRegion *doit_load(WRegion *mgr, WWindow *par, const WFitParams *fp, WRegionDoAttachFn *cont, void *cont_param, - ExtlTab tab) + const WRegionAttachData *data) { WRegion *reg=NULL; - if(extl_table_gets_o(tab, "reg", (Obj**)®)){ + if(extl_table_gets_o(data->u.tab, "reg", (Obj**)®)){ if(!OBJ_IS(reg, WRegion)) return FALSE; }/*else if(extl_table_is_bool_set(tab, "reg_use_new")){ @@ -145,11 +149,30 @@ static WRegion *doit_load(WRegion *mgr, if(reg!=NULL){ return doit_reparent(mgr, par, fp, cont, cont_param, reg); }else{ + WLP p; + p.tab=data->u.tab; + p.sm_ph_p=NULL; + return doit_new(mgr, par, fp, cont, cont_param, - (WRegionCreateFn*)wrap_load, &tab); + (WRegionCreateFn*)wrap_load, &p); } } + +WRegion *region_attach_load_helper(WRegion *mgr, + WWindow *par, const WFitParams *fp, + WRegionDoAttachFn *fn, void *fn_param, + ExtlTab tab, WPHolder **sm_ph) +{ + WLP p; + p.tab=tab; + p.sm_ph_p=sm_ph; + + return doit_new(mgr, par, fp, fn, fn_param, + (WRegionCreateFn*)wrap_load, &p); +} + + WRegion *region_attach_helper(WRegion *mgr, WWindow *par, const WFitParams *fp, WRegionDoAttachFn *fn, void *fn_param, @@ -159,7 +182,7 @@ WRegion *region_attach_helper(WRegion *mgr, return doit_new(mgr, par, fp, fn, fn_param, data->u.n.fn, data->u.n.param); }else if(data->type==REGION_ATTACH_LOAD){ - return doit_load(mgr, par, fp, fn, fn_param, data->u.tab); + return doit_load(mgr, par, fp, fn, fn_param, data); }else if(data->type==REGION_ATTACH_REPARENT){ return doit_reparent(mgr, par, fp, fn, fn_param, data->u.reg); }else{