document.getAnonymousElementByAttribute(this, "anonid", "main-box"); this._scrollbox.boxObject; -1) this._currentIndex = this.currentIndex + 1; var event = document.createEvent("Events"); event.initEvent("select", true, true); this.dispatchEvent(event); // always call this (allows a commandupdater without controller) document.commandDispatcher.updateCommands("richlistbox-select"); ]]> return this.insertItemAt(-1, aLabel, aValue); const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var item = this.ownerDocument.createElementNS(XULNS, "richlistitem"); item.setAttribute("value", aValue); var label = this.ownerDocument.createElementNS(XULNS, "label"); label.setAttribute("value", aLabel); label.setAttribute("flex", "1"); label.setAttribute("crop", "end"); item.appendChild(label); var before = this.getItemAtIndex(aIndex); if (!before) this.appendChild(item); else this.insertBefore(item, before); return item; return this.children[aIndex] || null; = 0) { // scrollRect.bottom wouldn't take a horizontal scroll bar into account let scrollRectBottom = scrollRect.top + this._scrollbox.clientHeight; offset = targetRect.bottom - scrollRectBottom; if (offset <= 0) return; } this._scrollbox.scrollTop += offset; ]]> height) break; // we've reached the desired distance index = ix; } return index != this.currentIndex ? index - this.currentIndex : aDirection; ]]> = 0; i--) { let selectedItem = this.selectedItems[i]; itemIds.push(selectedItem.id); this.selectedItems.remove(selectedItem); } for (let i = 0; i < itemIds.length; i++) { let selectedItem = document.getElementById(itemIds[i]); if (selectedItem) { this.selectedItems.append(selectedItem); } } } if (this.currentItem && this.currentItem.id) this.currentItem = document.getElementById(this.currentItem.id); else this.currentItem = null; // if we have no previously current item or if the above check fails to // find the previous nodes (which causes it to clear selection) if (!this.currentItem && this.selectedCount == 0) { this.currentIndex = this._currentIndex ? this._currentIndex - 1 : 0; // cf. listbox constructor: // select items according to their attributes var children = this.children; for (let i = 0; i < children.length; ++i) { if (children[i].getAttribute("selected") == "true") this.selectedItems.append(children[i]); } } if (this.selType != "multiple" && this.selectedCount == 0) this.selectedItem = this.currentItem; ]]> y) && (aItem.boxObject.y < y + this.scrollBoxObject.height); ]]> null label.value) .join(" "); ]]>