www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 3bd1ff7676b1b309b9fcf2592906639d5a2bfbd9
parent 48f90cb8b42c85eb47267e37d2e13372c648b68c
Author: Dan Stillman <dstillman@zotero.org>
Date:   Wed,  1 Feb 2012 18:15:29 -0500

Fix broken annotations

Diffstat:
Mchrome/content/zotero/xpcom/annotate.js | 22+++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/chrome/content/zotero/xpcom/annotate.js b/chrome/content/zotero/xpcom/annotate.js @@ -389,7 +389,7 @@ Zotero.Annotate.Path.prototype.fromNode = function(node, offset) { } if(!node) throw "Annotate: Path() resolved text offset inappropriately"; - while(node && !node === this._document) { + while(node && node !== this._document) { var number = 1; var sibling = node.previousSibling; while(sibling) { @@ -731,10 +731,18 @@ Zotero.Annotations.prototype.save = function() { // save annotations for each(var annotation in this.annotations) { - annotation.save(); + // Don't drop all annotations if one is broken (due to ~3.0 glitch) + try { + annotation.save(); + } + catch(e) { + Zotero.debug(e); + continue; + } } Zotero.DB.commitTransaction(); } catch(e) { + Zotero.debug(e); Zotero.DB.rollbackTransaction(); throw(e); } @@ -1387,7 +1395,7 @@ Zotero.Highlight.prototype.unhighlight = function(container, offset, path, mode) // loop through, removing nodes var node = span.firstChild; - while(span.firstChild && !span.firstChild === textNode) { + while(span.firstChild && span.firstChild !== textNode) { parentNode.insertBefore(span.removeChild(span.firstChild), span); } } else if(mode == 2) { @@ -1437,23 +1445,23 @@ Zotero.Highlight.prototype._highlight = function() { var onlyOneNode = startNode === endNode; - if(!onlyOneNode && !startNode === ancestor && !endNode === ancestor) { + if(!onlyOneNode && startNode !== ancestor && endNode !== ancestor) { // highlight nodes after start node in the DOM hierarchy not at ancestor level - while(startNode.parentNode && !startNode.parentNode === ancestor) { + while(startNode.parentNode && startNode.parentNode !== ancestor) { if(startNode.nextSibling) { this._highlightSpaceBetween(startNode.nextSibling, startNode.parentNode.lastChild); } startNode = startNode.parentNode } // highlight nodes after end node in the DOM hierarchy not at ancestor level - while(endNode.parentNode && !endNode.parentNode === ancestor) { + while(endNode.parentNode && endNode.parentNode !== ancestor) { if(endNode.previousSibling) { this._highlightSpaceBetween(endNode.parentNode.firstChild, endNode.previousSibling); } endNode = endNode.parentNode } // highlight nodes between start node and end node at ancestor level - if(!startNode === endNode.previousSibling) { + if(startNode !== endNode.previousSibling) { this._highlightSpaceBetween(startNode.nextSibling, endNode.previousSibling); } }