DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23793>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23793 dispatchEventToSubtree also dispatches to Siblings of initial Node Summary: dispatchEventToSubtree also dispatches to Siblings of initial Node Product: Xerces2-J Version: 2.5.0 Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: DOM AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The dispatching of events with the recursive function dispatchEventToSubtree(..) in DocumentImpl does also dispatch to the following Siblings of the initial Node (though they are not in the subtree). I have quickly fixed it by splitting the function into 2 and adding a boolean to prevent dispatching to siblings at the first level of recursion. (Invitation to everybody to fix this properly:) Please verify if this is correct. Thanks, Regards, Christian The following 2 functions replace the original function: ------------------------------------------- protected void dispatchEventToSubtree(NodeImpl node, Node n, Event e) { dispatchEventToSubtree( node, n, e,true); } protected void dispatchEventToSubtree(NodeImpl node, Node n, Event e,boolean p_FirstPass) { Vector nodeListeners = getEventListeners(node); if (nodeListeners == null || n == null) return; // ***** Recursive implementation. This is excessively expensive, // and should be replaced in conjunction with optimization // mentioned above. ((NodeImpl) n).dispatchEvent(e); if (n.getNodeType() == Node.ELEMENT_NODE) { NamedNodeMap a = n.getAttributes(); for (int i = a.getLength() - 1; i >= 0; --i) dispatchEventToSubtree(node, a.item(i), e,false); } dispatchEventToSubtree(node, n.getFirstChild(), e,false); if (!p_FirstPass)dispatchEventToSubtree(node, n.getNextSibling(), e,false); } ------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
