]> git.decadent.org.uk Git - ion3.git/blobdiff - ioncore/attach.c
[svn-upgrade] Integrating new upstream version, ion3 (20071220)
[ion3.git] / ioncore / attach.c
index 5d81222a97663e6a1e05eba06b183cb0b818c02b..52d09986b1fb71c2e481d552f859c4731f01e732 100644 (file)
@@ -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**)&reg)){
+    if(extl_table_gets_o(data->u.tab, "reg", (Obj**)&reg)){
         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{