# -*- Mode: HTML -*- # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is mozilla.org browser. # # The Initial Developer of the Original Code is # Joe Hewitt. # Portions created by the Initial Developer are Copyright (C) 2003 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Pierre Chanial (p_ch@verizon.net) # Dean Tessman (dean_tessman@hotmail.com) # Masayuki Nakano (masayuki@d-toybox.com) # Pamela Greene (pamg.bugs@gmail.com) # Edward Lee (edward.lee@engineering.uiuc.edu) # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** null null false null false 14 false false 0) this.tree.treeBoxObject.ensureRowIsVisible(val < 0 ? 0 : val); // Fire select event on xul:tree so that accessibility API // support layer can fire appropriate accessibility events. var event = document.createEvent('Events'); event.initEvent("select", true, true); this.tree.dispatchEvent(event); return val; ]]> 100 ? width : 100); this.openPopup(aElement, "after_start", 0, 0, false, false); this.popupBoxObject.setConsumeRollupEvent(this.mInput.consumeRollupEvent); } ]]> document.getAnonymousElementByAttribute(this, "anonid", "tree"); document.getAnonymousElementByAttribute(this, "anonid", "treecols"); null false 6 -1 aMaxRow && aIndex != aMaxRow) newIdx = aMaxRow; else if (!aReverse && aIndex == -1 || newIdx < 0 && aIndex != 0) newIdx = 0; if (newIdx < 0 && aIndex == 0 || newIdx > aMaxRow && aIndex == aMaxRow) aIndex = -1; else aIndex = newIdx; return aIndex; ]]> 0 0 5 100 ? width : 100); // invalidate() depends on the width attribute this._invalidate(); this.openPopup(aElement, "after_start", 0, 0, false, false); this.popupBoxObject.setConsumeRollupEvent(this.mInput.consumeRollupEvent); } ]]> = this._matchCount) return; var existingItemsCount = this.richlistbox.childNodes.length; var item; // trim the leading/trailing whitespace var trimmedSearchString = controller.searchString.replace(/^\s+/, "").replace(/\s+$/, ""); // Unescape the URI spec for showing as an entry in the popup let url = Components.classes["@mozilla.org/intl/texttosuburi;1"]. getService(Components.interfaces.nsITextToSubURI). unEscapeURIForUI("UTF-8", controller.getValueAt(this._currentIndex)); if (this._currentIndex < existingItemsCount) { // re-use the existing item item = this.richlistbox.childNodes[this._currentIndex]; // Completely re-use the existing richlistitem if it's the same if (item.getAttribute("text") == trimmedSearchString && item.getAttribute("url") == url) { item.collapsed = false; this._currentIndex++; continue; } } else { // need to create a new item item = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "richlistitem"); } // set these attributes before we set the class // so that we can use them from the contructor item.setAttribute("image", controller.getImageAt(this._currentIndex)); item.setAttribute("url", url); item.setAttribute("title", controller.getCommentAt(this._currentIndex)); item.setAttribute("type", controller.getStyleAt(this._currentIndex)); item.setAttribute("text", trimmedSearchString); if (this._currentIndex < existingItemsCount) { // re-use the existing item item._adjustAcItem(); item.collapsed = false; } else { // set the class at the end so we can use the attributes // in the xbl constructor item.className = "autocomplete-richlistitem"; this.richlistbox.appendChild(item); } this._currentIndex++; } // yield after each batch of items so that typing the url bar is responsive setTimeout(function (self) { self._appendCurrentResult(); }, 0, this); ]]> document.getAnonymousElementByAttribute(this, "anonid", "richlistbox"); # note, we rely on the newlines here so that we have # a textNode before and after the span. see _setUpDescription() # for more details # note, we rely on the newlines here so that we have # a textNode before and after the span. see _setUpDescription() # for more details ") is related to the class of the image, // and is not "visible" text so don't use it for the label (for accessibility). return title + " " + url; ]]> 0) { // Subtract a little less to account for subpixel rounding widthDiff -= childWidth - .5; // Add to the tooltip if it's not hidden and has text let childText = children[i].textContent; if (childText) tooltip.push(childText); } } // If the children take up more space than the parent.. overflow! if (widthDiff < 0) { // Re-show the ellipsis now that we know it's needed aEllipsis.hidden = false; // Separate text components with a ndash -- aParentBox.tooltipText = tooltip.join(" \u2013 "); } ]]> Date.now() 30) { var item = event.target; while (item && item.localName != "richlistitem") item = item.parentNode; if (!item) return; var rc = this.getIndexOfItem(item); if (rc != this.selectedIndex) this.selectedIndex = rc; this.mLastMoveTime = Date.now(); } ]]> Date.now() 30) { var rc = this.parentNode.treeBoxObject.getRowAt(event.clientX, event.clientY); if (rc != this.parentNode.currentIndex) this.parentNode.view.selection.select(rc); this.mLastMoveTime = Date.now(); } ]]>