diff -urN cui33/cui.c cui34/cui.c --- cui33/cui.c Fri Jan 31 00:50:00 2014 +++ cui34/cui.c Fri Jan 31 01:00:00 2014 @@ -181,6 +181,8 @@ return 0; } +cui cui_focus_move_judge_chain(cui obj, int key, cui old, int *val); + cui cui_focus_move_judge(cui obj, int key, cui old, int *val) { @@ -188,8 +190,7 @@ cui focus = cui_focus_get(); if(obj == NULL) return old; - old = cui_focus_move_judge(obj->next, key, old, val); - old = cui_focus_move_judge(obj->children, key, old, val); + old = cui_focus_move_judge_chain(obj->children, key, old, val); if(obj == focus) return old; if(!(obj->flags & CUI_FLG_CAN_FOCUS)) return old; @@ -238,6 +239,15 @@ if(jg) *val = v; return jg ? obj : old; } + +cui +cui_focus_move_judge_chain(cui obj, int key, cui old, int *val) +{ + if(obj == NULL) return old; + old = cui_focus_move_judge_chain(obj->next, key, old, val); + return cui_focus_move_judge(obj, key, old, val); +} + void cui_draw(cui obj)