commit 81e9a7010e64a8ae1cc14d5239870aeb01d5e771
parent 5fcbd914ae90ec9342b7b7b0aa276c100662057a
Author: Simon Kornblith <simon@simonster.com>
Date: Mon, 6 Jun 2011 04:30:06 +0000
only use first 50 selected items when determining locate menu actions, to prevent a slowdown when accessing the context menu with a large number of items selected
Diffstat:
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/chrome/content/zotero/locateMenu.js b/chrome/content/zotero/locateMenu.js
@@ -42,7 +42,7 @@ var Zotero_LocateMenu = new function() {
locateMenu.removeChild(locateMenu.firstChild);
}
- var selectedItems = [item for each(item in ZoteroPane_Local.getSelectedItems()) if(!item.isNote())];
+ var selectedItems = _getSelectedItems();
if(selectedItems.length) {
_addViewOptions(locateMenu, selectedItems, true, true);
@@ -96,7 +96,7 @@ var Zotero_LocateMenu = new function() {
*/
this.buildContextMenu = function(menu) {
// get selected items
- var selectedItems = [item for each(item in ZoteroPane_Local.getSelectedItems()) if(!item.isNote())];
+ var selectedItems = _getSelectedItems();
// if no items selected, stop now
if(!selectedItems.length) return;
@@ -271,7 +271,7 @@ var Zotero_LocateMenu = new function() {
* Locate selected items
*/
function _locateItem(event) {
- var selectedItems = ZoteroPane_Local.getSelectedItems();
+ var selectedItems = _getSelectedItems();
// find selected engine
var selectedEngine = Zotero.LocateManager.getEngineByName(event.target.label);
@@ -311,6 +311,19 @@ var Zotero_LocateMenu = new function() {
);
}
+ /**
+ * Get the first 50 selected items
+ */
+ function _getSelectedItems() {
+ var allSelectedItems = ZoteroPane_Local.getSelectedItems();
+ var selectedItems = [];
+ while(selectedItems.length < 50 && allSelectedItems.length) {
+ var item = allSelectedItems.shift();
+ if(!item.isNote()) selectedItems.push(item);
+ }
+ return selectedItems;
+ }
+
var ViewOptions = {};
/**