In ImapDB.Folder, typo meant problems with duplicate detection.
In ConversationMonitor, removing Message-IDs from reverse lookup
map continued to be an issue.
This patch introduces a simpler timeout scheme in ClientConnection,
as the need for ClientConnection to report which Commands (by Tags)
had timed out never materialized. (It's better handed upstairs in
higher layers of the IMAP stack.) This scheme accounts for data
being received, even if the command does not complete in the
timeout interval.
Additionally, ClientSession now uses a better timeout scheme of its
own for issuing NOOP keepalives. Now, they will only be issued
if no traffic (not just send traffic) has not happened in the
allotted time.
Note that this does not solve the problem of large attachments
stopping other IMAP traffic (fixed with #4462) or the server
dropping a Command (which needs to be taken care of in #5869).
The folder normalization check_open()'s are needed if it takes a
long time to download folder normalization data from the server.
In ImapDB.Folder, these changes are important for duplicate
detection.
Numerous optimizations throughout the stack to improve loading
large numbers of messages at once. This can still be improved,
but this is a start for loading ~2000 messages at once.
Because Messaging Menu isn't available on Precise, a special
debian/control.quantal file is introduced here. We should move to
using it solely when we phase out Precise support.
Complete refactoring of dropdown menu toolbar buttons. This uses
a better approach toward using customized widgets for the toggle
buttons and a more centralized approach toward maintaining the
dropdown menu.
In additional, Geary.FolderPath is now a Comparable, and should be
used as such in the future.
It's believed this patch will also fix ticket #5831.
Better icon courtesy Daniel Fore. Also increased the size of the
toolbar and reduced the child spacing in the composer to better
utilize space. This might also handle #5054, but need to confirm
separately.
Commit 327d183b (closing #5571) introduced regressions when a folder
is closing or closed. This patch addresses two problems, one a crasher
and the other a case where the replay queue simply never closed when
requested.
Bug was due to current flag on server being updated in local database
after the local operation had made a different change and was waiting
for normalization to complete to make the change on the server.
ReplayQueue now has a notion of a writebehind operation, which means
an immediate local change that a ReplayOperation waiting to make on
the remote must now account for.
Some servers send NIL rather than an empty literal when there's
no MIME sections in the body (or, more likely, they don't support
MIME fetching). This handles that problem.
Fundamental problem is that ConversationMonitor was reporting
each message as it was removed and then the entire conversation
being removed. This caused the row in the conversation list to
be re-sorted as its latest date changed, moving the selection
along with it.
ConversationMonitor now does not report the removal of messages
if the conversation is about to be removed wholesale.
Associated with #5703, the delimiter reported by IMAP LIST may be
NIL, which is treated as a null in the decoder. However, it was
being dereferenced without checking for null later in the method.
Related to report in #5703, it appears some Dovecot servers send back
ENVELOPE data (and perhaps more) as literals where atoms/quoted
strings are expected. This change will convert all reasonably-sized
literals into StringParameters. If a decoder demands a StringParameter,
it can use the new get_only_as_string() variants.
Moved the archive button to the right as per #4495 . Also moved the mark menu
leftward and the move menu rightward. The general idea here is that buttons
that operate on the message itself appear toward the left, and that buttons
that move it elsewhere appear toward the right.
When another folder is selected, the Inbox folder is still open
for monitoring and notifications. However, its ConversationMonitor
is destroyed when the folder selection changes, which is the
mechanism that performs connection re-establishment if the connection
dies. Thus, if the Inbox connection dies while another folder is
selected, new Inbox messages are not received.
This fixes that problem by maintaining an Inbox ConversationMonitor
at all times.
Geary originally only dealt in email messages, and so the original
classes' names reflected that. When we switched to
conversation-based views, those names were not changed, making the
code slightly difficult to understand. This converts those client
classes into Conversation* names.