From 8b0208ae44ce20a14f97a1308a20d0b163aa5402 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 3 Apr 2009 16:29:00 +0000 Subject: [PATCH] Fixed ElementsIndexer to not stop at elements that are not currently rendered. Thanks Adam Borrows for catching and describing this and the patch which does exactly the right thing. r=me (closes #1986) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9177 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Renderer/Elements.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Renderer/Elements.js b/lib/OpenLayers/Renderer/Elements.js index f83288c165..280e35eb58 100644 --- a/lib/OpenLayers/Renderer/Elements.js +++ b/lib/OpenLayers/Renderer/Elements.js @@ -109,9 +109,7 @@ OpenLayers.ElementsIndexer = OpenLayers.Class({ // If the new node should be before another in the index // order, return the node before which we have to insert the new one; // else, return null to indicate that the new node can be appended. - var nextIndex = rightIndex + 1; - return nextIndex < this.order.length ? - OpenLayers.Util.getElement(this.order[nextIndex]) : null; + return this.getNextElement(rightIndex); }, /** @@ -200,6 +198,30 @@ OpenLayers.ElementsIndexer = OpenLayers.Class({ this.maxZIndex = zIndex; } }, + + /** + * APIMethod: getNextElement + * Get the next element in the order stack. + * + * Parameters: + * index - {Integer} The index of the current node in this.order. + * + * Returns: + * {DOMElement} the node following the index passed in, or + * null. + */ + getNextElement: function(index) { + var nextIndex = index + 1; + if (nextIndex < this.order.length){ + var nextElement = OpenLayers.Util.getElement(this.order[nextIndex]); + if (nextElement == undefined){ + nextElement = this.getNextElement(nextIndex); + } + return nextElement; + } else { + return null; + } + }, CLASS_NAME: "OpenLayers.ElementsIndexer" });