- On manual sync or the first auto-sync of a session, check all files
- During other auto-syncs, check only files previously modified or
opened externally via Zotero (including Show File) within the last 3
hours
- Every 3 hours, do a full check of all files even if it's an auto-sync
- Spin event loop during synchronous file checks to avoid hanging the UI
- Zotero.Sync.Runner.sync() now takes an options object (e.g.,
options.background)
Todo:
- Provide feedback on last full check in sync icon tooltip?
- Auto-sync on app focus, if this speeds up syncs enough?
OS.File doesn't seem to work reliably before Firefox 23, so older
versions will continue to do mod time checking on the main thread.
Zotero.Sync.Storage.checkForUpdatedFiles() now returns a promise.
platformVersion is a string that needs to be checked with
nsIVersionComparator. platformMajorVersion is an integer that can be
checked with > and < when the major Gecko version is enough.
Task.jsm allows not only generators but also iterators to be yielded,
using ``typeof yielded == 'Function'`` as the test for an iterator, but
since the Q promise includes a send() method, yielding a Q promise
instead of a Mozilla promise results in an infinite loop. To fix this,
we disable Q's send() method, which is just an outdated synonym for
invoke() anyway.
This will have to be done every time we update Q until send() is
removed, Task.jsm is changed, or we stop using Task.jsm with Q promises.
The Zotero shortcut keys, and their event.preventDefault(), were bound
to keydown, so shortcuts bound to keypress were still be called. This
moves most of the shortcut handling code into the keypress handler.
Fixes#344
This happens when a user inserts a bibliography in the middle of a
paragraph and doesn't fully delete it.
Also remove unused code for deleting citations from the document.
It appears that this flag can no longer be set in new-ish Nightlies.
This patch switches code that used nsITimers with the
Components.utils.methodjit hack to use setTimeout on the hidden DOM
window instead, so that we still get the JIT. (See
https://bugzilla.mozilla.org/show_bug.cgi?id=776798)
This might also mean that callbacks from doGet etc. no longer get JITed.
At some point, we should test this with the JIT profiler.