widget tree-structure update