Both leaflets are unfolded by default, and fold down if the window is
too small, hence the conversation list's and viewer's action bar
revealers must be hidden by default to match,
Convert Components.ConversationActions to a widget that encapsulates
selectively visible conversations action groups. Use multiple instances
of that in preference to a single shared instance that gets re-parented
as the responsive UI adjusts.
Flatten the custom widget hierarchy a bit by merging the
`ConversationActionBar` and `ConversationHeaderbar` widgets into
`MainToolbar` itself.
Since commit 6a0ad721 landed the client can no longer reply on
pre-filling JS page state before loading the message body HTML, since
it would be cleared when the JS page state is initialised in the
window-object-cleared handler.
Instead, set the load remote flag as a GObject data property on the
WebKit.WebPage object in the web process via the extension, and consult
that when determining whether to allow loading remote content.
Fixes#1170
Ensure a progress meter is shown even for remote resources loading
after the page load has completed, but don't bother showing it for the
page load itself.
At least one IMAP server has been observed to send a UIDVALIDITY 0 value,
for example, iCloud. This change allows Geary to work with such servers,
even though it's technically in violation of RFC 3501.
Fixes#1183
Pass an instance of the owning `Sidebar.Tree` through to `Sidebar.Entry`
when calling `internal_drop_received` instead of a
`Application.MainWindow` to remove a bidi relationship between the two.
Use the high level GTK API for determining the DnD action in
`FolderList.Entry`'s implementation of this method, rather than attempt,
to divine it from keyboard modifiers via the associated GDK window,
since under Wayland that will be null.
Fixes#1163
On slow connections and/or for large literal data blocks, commands can
time out while still reading literal data.
Ensure that command timeouts are updated whenever we also notify
higher level components of data being received.
Since `received_bytes` is emitted whenever a complete line is received
from the server, it can be emitted a *lot*. To reduce the CPU overhead
of this, and since it's only used for timekeeping at higher levels,
coalesce emission to only occur at most once a second.
Since `ClientConnection` emits `received_bytes` whenever *any* data is
received, updating the keep-alive and last-seen when data is received
and when higher level constructs are received is redundant.