tiling_unmanage_stdisp(ws, TRUE, TRUE);
return;
}
+
+ stdisp->flags|=REGION_SKIP_FOCUS;
dg=((WSplit*)(ws->stdispnode))->geom;
}
region_unset_manager(reg, (WRegion*)ws);
+ splittree_set_node_of(reg, NULL);
}
if(other!=NULL){
node->reg=other;
+ splittree_set_node_of(other, node);
tiling_managed_add(ws, other);
reused=TRUE;
}else{
}
-void do_unsplit(WRegion *reg)
+/*EXTL_DOC
+ * Try to relocate regions managed by \var{reg} to another frame
+ * and, if possible, destroy it.
+ */
+EXTL_EXPORT_MEMBER
+void tiling_unsplit_at(WTiling *ws, WRegion *reg)
{
- WTiling *ws=REGION_MANAGER_CHK(reg, WTiling);
WPHolder *ph;
- bool res;
- if(ws==NULL)
+ if(reg==NULL || REGION_MANAGER(reg)!=(WRegion*)ws)
return;
ph=region_get_rescue_pholder_for((WRegion*)ws, reg);
- if(ph==NULL){
- res=!region_rescue_needed(reg);
- }else{
- res=region_rescue(reg, ph);
+ if(ph!=NULL){
+ region_rescue(reg, ph);
destroy_obj((Obj*)ph);
}
- if(!res){
- warn(TR("Unable to unsplit: Could not move client windows "
- "elsewhere within the tiling."));
- return;
- }
-
- destroy_obj((Obj*)reg);
-}
-
-
-/*EXTL_DOC
- * Try to relocate regions managed by \var{reg} to another frame
- * and, if possible, destroy it.
- */
-EXTL_EXPORT_MEMBER
-void tiling_unsplit_at(WTiling *ws, WRegion *reg)
-{
- if(reg==NULL || REGION_MANAGER(reg)!=(WRegion*)ws)
- return;
-
- mainloop_defer_action((Obj*)reg, (WDeferredAction*)do_unsplit);
+ region_defer_rqdispose(reg);
}