This patch is a grab-bag of fixes to get mail onto the screen faster
and report new mail waiting on the server more quickly.
In a nutshell:
* Adds a NO_DELAY flag to Folder.open_async which indicates that
background remote connections should initiate ASAP rather than
wait for a local request that requires remote information.
* Reduce creation of ImapDB.Folders (which, previously, were
generated as though "cheap"), which means caching server
information. ImapDB now relies on ImapEngine to refresh that
information on its own.
* The background search table update is delayed to allow startup
database tasks priority.
* Rather than delay selection of a folder 100ms to prevent the user
from holding down a key or clicking madly, the initial selection
goes right through, but subsequent ones are delayed. This may
also help resolve bug #713468.
* And the big one: ImapEngine.Account doesn't load local and remote
folders in parallel at startup, but rather local first, reports
them to the user, and then loads the remote and pairs the two.
This gets the UI up and going much more quickly.
* Remove details section
* Fix plural problem
* Remove unnecessary labels
* Only allow to prompt for one password at a time, which was true in
practice already, but the code is cleaner making that a requirement
Closes: bgo #720779
This approach immediately updates the remote_count when an upcall
is received, as that math is important for determining positional
addressing if another one immediately follows it. However, the
async calls only deal in the remote count *at the time the upcall
arrived*, in effect allowing for the upcall to be serially processed
using async blocking calls.
Fix involved wider cleanup of Message processing code. In particular,
RFC822Message.get_body() can allow or disallow the inline image
replacer to be the only part of the message depending on if get_body()
is in "fallback" mode or not.
This should get Geary ready to be integrated into l10n.gnome.org,
GNOME's Damned Lies translation project. The biggest change is that we
no longer track a .pot file, but we set it up so that translators can
generate their own using intltool-update --pot.
Closes: bgo #713827
Archive shows up as its own button for any account that supports
archiving (currently only Gmail). Trash or delete shows up as one
button, depending on what the folder supports and whether you've got the
shift key held down. Future work will extend supporting archive to
other account types and getting the trash special folder recognized in
more accounts.
Closes: bgo #714212
Vala 0.23.1 introduced a change to how array .length property is
evaluated when transferring ownership to a method. See
bgno#721001 for more information.
This work is the result of the prior commit (updating the Preferences
box, specifically). Instead of initialzing Widgets with GSettings
values and writing values out as Widget state changes, bind GSettings
values directly to the Widgets. This logic is also moved out to the
rest of the application where monitoring changes is necessary.
This has the pleasant side-effect of allowing changes to come in from
GSettings backends (i.e. dconf) and having them updated in Geary
automatically.
This makes both the Preferences and Accounts dialogs modal and
transient for the parent window. Additional code changes are to
remove logic in place to deal with previouys modeless-ness of those
dialogs.
WebKitGTK 2.4 will introduce using GClosure to register
DOM.EventTarget listeners, but old API still available, so using
that for now.
This also introduces compiling WebKit-3.0.gir to a VAPI and using
that during compilation. This means that .gir warnings won't
cause compilation errors (--fatal-warnings) and that we have a bit
more control over binding generation. Closes bgno#720442.
This is technically a workaround until Vala fixes bgo#720437.
Although the code change seems innocuous, the original code
caused Vala's generator to not cast the returned int value to
a pointer.