void region_set_await_focus(WRegion *reg) { if(reg==NULL){ watch_reset(&await_watch); }else{ watch_setup(&await_watch, (Obj*)reg, (WatchHandler*)await_watch_handler); } }
static void await_watch_handler(Watch *UNUSED(watch), WRegion *prev) { WRegion *r; while(1){ r=REGION_PARENT_REG(prev); if(r==NULL) break; if(watch_setup(&await_watch, (Obj*)r, (WatchHandler*)await_watch_handler)) break; prev=r; } }
void grouppholder_do_link(WGroupPHolder *ph, WGroup *group, WRegion *stack_above) { ph->group=group; if(group!=NULL){ LINK_ITEM_FIRST(group->phs, ph, next, prev); }else{ /* This seems very crucial for detached pholders... */ ph->next=NULL; ph->prev=ph; } /* We must move stack_above pointer into a Watch. */ if(stack_above!=NULL) watch_setup(&(ph->stack_above_watch), (Obj*)stack_above, NULL); }
static ObjList *mknode(void *obj) { ObjList *node; if(obj==NULL) return NULL; node=ALLOC(ObjList); if(node==NULL) return FALSE; watch_init(&(node->watch)); if(!watch_setup(&(node->watch), obj, watch_handler)){ free(node); return NULL; } return node; }