From 81e9a7010e64a8ae1cc14d5239870aeb01d5e771 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Mon, 6 Jun 2011 04:30:06 +0000 Subject: [PATCH] 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 --- chrome/content/zotero/locateMenu.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/chrome/content/zotero/locateMenu.js b/chrome/content/zotero/locateMenu.js index b8eb33c0e..181aac850 100644 --- 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 = {}; /**