+ WLListNode *or_after=LIST_LAST(dst->mx_list, next, prev);
+ WMPlexPHolder *after=(or_after!=NULL
+ ? LIST_LAST(or_after->phs, next, prev)
+ : LIST_LAST(dst->misc_phs, next, prev));
+
+ while(src->misc_phs!=NULL){
+ WMPlexPHolder *ph=src->misc_phs;
+ mplexpholder_move(ph, dst, after, or_after);
+ after=ph;
+ }
+}
+
+
+/*}}}*/
+
+
+/*{{ Rescue */
+
+
+WRegion *mplex_rescue_attach(WMPlex *mplex, int flags, WRegionAttachData *data)
+{
+ WMPlexAttachParams param;
+
+ param.flags=0;
+
+ /* Improved attach parametrisation hack for WMPlex source */
+ if(data->type==REGION_ATTACH_REPARENT){
+ WRegion *reg=data->u.reg;
+ WMPlex *src_mplex=REGION_MANAGER_CHK(reg, WMPlex);
+ if(src_mplex!=NULL){
+ WStacking *st=ioncore_find_stacking(reg);
+ if(st!=NULL)
+ mplex_get_attach_params(src_mplex, st, ¶m);
+ }
+ }
+
+ param.flags|=(MPLEX_ATTACH_INDEX|
+ (flags&PHOLDER_ATTACH_SWITCHTO ? MPLEX_ATTACH_SWITCHTO : 0));
+ param.index=LLIST_INDEX_LAST;
+
+ return mplex_do_attach(mplex, ¶m, data);
+}
+
+
+WPHolder *mplex_get_rescue_pholder_for(WMPlex *mplex, WRegion *mgd)
+{
+#if 0