--- /tmp/AttributesUtilities.java 2008-04-22 11:38:48.000000000 +0300 +++ AttributesUtilities.java 2008-04-22 15:50:46.000000000 +0300 @@ -191,6 +191,12 @@ /** Creates a new instance of SmartAttributeSet */ private Immutable(HashMap attribs) { this.attribs = attribs == null ? new HashMap() : attribs; + Object resolver = this.attribs.get(AttributeSet.ResolveAttribute); + if(resolver instanceof AttributeSet){ + setResolveParent((AttributeSet)resolver); + }else{ + //broken or null resolver key. Ignore (log if different class maybe ?) + } } public synchronized void setResolveParent(AttributeSet parent) { @@ -373,9 +379,13 @@ } for(AttributeSet delegate : delegates) { - if (delegate.isDefined(key)) { - return delegate.getAttribute(key); - } + AttributeSet current = delegate; + while (current != null) { + if (current.isDefined(key)) { + return current.getAttribute(key); + } + current = current.getResolveParent(); + } } return null;