Investigation into Bug 772522 showed that often when a message is first
added to MessageSearchTable, all columns had null or empty strings as
values, which constitutes an undesirable write IO overhead.
* src/engine/imap-db/imap-db-folder.vala
(Folder::do_add_email_to_search_table): Ensure that there is at least
one non-empty value before doing the INSERT.
This allows removing a large number of uses of the apps's static instance
variable, which is highly desirable.
* src/client/application/geary-controller.vala (GearyController): Add
GearyApplication as a weak internal field. Set it in the ctor. Use that
instead of GearyApplication.instance throughout.
* src/client/application/geary-application.vala
(GearyApplication::controller): Pass this in to the controller when it
is constructed.
* src/client/application/geary-controller.vala: General search code
cleanup.
(GearyController::on_conversation_viewer_email_added): Don't explicitly
perform a search, it will be triggered by setting the text.
Bug 765516
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage::load_avatar): Check HTTP response before loading
the icon.
* src/client/conversation-viewer/conversation-message.vala (set_avatar):
Don't bother trying to catch any GdkPixbuf error, just pass it up the
call chain.
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage::on_address_box_child_activated): Set the copy
action's param using the full address.
(ConversationMessage::set_action_param_strings): New method to allow
specifying different action param values.
* src/client/composer/email-entry.vala (EmailEntry::on_changed): Now that
the completion is being lazily added, we need to check the completion
is null before using it.
* src/client/conversation-viewer/conversation-message.vala
(AddressFlowBoxChild::AddressFlowBoxChild): Check for enter and leave
events, update the prelight state of the flowbox child accordingly.
(ConversationMessage::on_address_box_child_activated): Update the
active state of the flowbox child appropriately when the popover
active.
* ui/geary.css: Style the active and hover states of the flowboxes.
Replace the dim-label hack with two distinct labels, themed using GTK CSS
classes.
Bug 765516.
* src/client/conversation-viewer/conversation-message.vala
(AddressFlowBoxChild::AddressFlowBoxChild): Construct a different
Gtk.Label for each address part, add CSS classes to enable them to be
styled. Pass an enum in to specify From addresses, rather than Pango
markup attr values. Fix call sites. Remove now obsolete
::format_address() method, update call sites.
* src/client/util/util-gtk.vala (pango_color_from_theme): Remove now
unsed method.
* ui/geary.css: Style the new address labels.
Fixes Bug 772427.
* src/client/composer/composer-widget.vala
(ComposerWidget::update_from_field): Always add the primary account's
addresses to the From combobox, regardless of reply type. Tidy up some
comments.
(ComposerWidget::add_account_emails_to_from_list): Add a missing "this"
for clarity.
* src/client/composer/composer-widget.vala: Removed uneeded embedded
composer style - we're setting a min size for the composer on the GTK
widget now.
* src/client/composer/composer-embed.vala: Don't bother setting the HTML
CSS class now it is unused. Use Source.REMOVE for callback return
values for clarity.
* src/client/conversation-viewer/conversation-list-box.vala
(ConversationRow): Pull should_scroll machinery up from EmailRow
subclass so we can also use it for scrolling to ComposerRow.
(ConversationListBox::add_embedded_composer): Enable should_scroll for
composer rows, scroll to it when triggered. Remove existing,
non-functional attempt to focus the composer.
(ConversationListBox::scroll_to): Allow scrolling to any kind of
ConversationRow.
* src/client/composer/composer-embed.vala (ComposerEmbed): Remove unused
loaded signal.
* src/client/conversation-viewer/conversation-listbox.vala
(ConversationListBox): Keep track of the draft id currently being
edited, don't add it to the conversation when appended.
* src/client/composer/composer-container.vala (ComposerContainer): Make
the container's composer internal so we can hook into its
draft_id_changed signal. Update implementing classes.
* src/client/conversation-list/conversation-list-store.vala
(ConversationListStore): Use a static sort function implementation,
rather than unsetting the instance method when destroyed.
* src/client/conversation-viewer/conversation-listbox.vala: Add two
different listbox child row types, one for emails only and one for
composers only, with a common ConversationRow superclass. When a draft
composer is added, replace the draft email it is standing in for, and
replace it again when removed. Rename last_email_row to last_row and
make into a generic ConversationRow, only update it at the end of a
batch of changes.
* src/client/conversation-viewer/conversation-listbox.vala: Rename
list_full_emails_async to load_full_emails, add load_full_email method
that loads a single message and adds it to the list, use that when the
convo is appended to. Reorganise positions in source file to make some
more sense.
* src/client/composer/composer-box.vala,
src/client/composer/composer-embed.vala: Use vexpand so as to work
with GtkGrid, use consistent GTK CSS classes.
* src/client/application/geary-controller.vala: Move construction of
ComposerEmbed into ConversationViewer so its scrollbar doesn't need to
be made available.
* src/client/conversation-viewer/conversation-listbox.vala (EmailRow):
Add a grid to the row, then add the email view to that. Allow embedded
composers to also be added to the grid, hide the email view when the
composer is for a draft. Fix code making asumptions about EmailRow's
child.
(ConversationListBox::add_embedded_composer): Add draft param, pass it
through to the email row. Update call sites.
* src/client/conversation-viewer/conversation-email.vala
(ConversationEmail): Remove composer related prop and methods, since
its handled by EmailRow now.
* ui/geary.css: Update widget hierarchy.
* src/client/composer/composer-widget.vala (ComposerWidget): Add
draft_id_changed signal, emit that when the manager's draft id changes,
rather than hooking directly into the ConversationListBox.
* src/client/conversation-viewer/conversation-listbox.vala
(ConversationListBox): Remove blackisting methods, update call sites.