From 2523bca65914af00cbdbfdf65dac4f18aa3c4e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adomas=20Ven=C4=8Dkauskas?= Date: Wed, 24 Jan 2018 16:03:19 +0200 Subject: [PATCH] Fix slow citation dialog initialization Report: https://forums.zotero.org/discussion/69929/beta-delay-citation-feature --- chrome/content/zotero/xpcom/integration.js | 38 +++++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js index 2edea3b94..bf9b11aa7 100644 --- a/chrome/content/zotero/xpcom/integration.js +++ b/chrome/content/zotero/xpcom/integration.js @@ -1133,26 +1133,30 @@ Zotero.Integration.Fields.prototype.addEditCitation = Zotero.Promise.coroutine(f // ------------------- // Preparing stuff to pass into CitationEditInterface - var fields = yield this.get(); - for (var fieldIndex = 0; fieldIndex < fields.length; fieldIndex++) { - if (fields[fieldIndex].equals(field._field)) { - // This is needed, because LibreOffice integration plugin caches the field code instead of asking - // the document every time when calling #getCode(). - field._field = fields[fieldIndex]; - break; + var fieldIndexPromise = this.get().then(function(fields) { + for (var i=0, n=fields.length; i { return citationsByItemID[itemID] && citationsByItemID[itemID].length // Exclude the present item && (citationsByItemID[itemID].length > 1 - || citationsByItemID[itemID][0].properties.zoteroIndex !== this._fieldIndex); + || citationsByItemID[itemID][0].properties.zoteroIndex !== fieldIndex); }); // Sort all previously cited items at top, and all items cited later at bottom @@ -1264,12 +1270,12 @@ Zotero.Integration.CitationEditInterface.prototype = { var indexA = citationsByItemID[a][0].properties.zoteroIndex, indexB = citationsByItemID[b][0].properties.zoteroIndex; - if(indexA >= this._fieldIndex){ - if(indexB < this._fieldIndex) return 1; + if (indexA >= fieldIndex){ + if(indexB < fieldIndex) return 1; return indexA - indexB; } - if(indexB > this._fieldIndex) return -1; + if (indexB > fieldIndex) return -1; return indexB - indexA; });