* src/client/accounts/account-dialog-add-edit-pane.vala
(AccountDialogAddEditPane): Pass an account id to edit_alternate_emails
signal, not an email addess.
* src/client/accounts/account-dialog.vala
(AccountDialog::get_account_info_for_email): Rename method to
"get_account_info" and param since it actually accepts an account
id. Update call sites.
* src/client/accounts/add-edit-page.vala (AddEditPage::id): Make RO
access public, so the AddEditPane can access it.
* src/client/conversation-list/conversation-list-view.vala
(ConversationListView): Convert to using IdleManager for handling
selection updating, reset it when widget is destroyed.
Should help/fix Bug 778025.
* ui/client-web-view.js (PageView::init): Also add a load handler to the
window, to (strangely) catch the final load event on the
document. Expand and correct comments a bit.
* src/client/composer/composer-web-view.vala
(ComposerWebView::load_html): Remove spacers around cursor, just add
them after body and inline quote if present. Update unit tests.
In some cases, it may happen that a mail is being sent multiple times simultaneously
to the same recipient.
The only modified field being the Message-ID, we have to check it as well as
message's size before merging 2 mails together.
Otherwise, at each start-up Geary will try to fetch "missing mails" but will never
succeed to do so.
This lets us implement changing signatures and deleting bottom-quoted
messages without having to reload the whole view, and makes it possible
to target only the user's content when modifying for send, etc.
* src/client/composer/composer-web-view.vala (ComposerWebView): Move
composer CSS into composer-web-view.css resource file, load it when
loading JS resource and add it to the view's user content manager.
(ComposerWebView::load_html): Split up body, signature and quote into a
DIV container for each.
(ComposerWebView::linkify_content): Replaced with ::clean_content,
which will also tidy up internal markup before sending. Update call
site and unit test.
* src/engine/rfc822/rfc822-utils.vala (Geary.RFC822.Utils): Remove some
more obtrusive white space when sending replies/forwards.
* test/client/composer/composer-web-view-test.vala,
test/js/composer-page-state-test.vala: Update tests to expect new HTML
and text output from ComposerWebView and use of individual parts for
composer markup.
* ui/composer-web-view.js (ComposerPageState): Replace messageBody
property and uses with bodyPart, signaturePart and quotePart. Set these
content-editable on load. Move listeners from messageBody back to the
document.body so they also listen for events on the additional
parts. Keep track of text cursor location within the parts and set a
class if so, to work around the lack of :focus-inside support.
(ComposerPageState::updateSignature): Implement by updating the inner
content of the signature part.
(ComposerPageState::deleteQuotedMessage): Implement by removing the
quote part from the DOM tree.
(ComposerPageState::containsAttachmentKeyword): Consider only the
bodyPart when scanning for attachments, remove hacks for ignoring the
signature any any quoted message.
(ComposerPageState::linkifyContent): Mirror ClientWebView change and
replace with ::cleanContent. Ensure existing parts have contenteditable
and focus class removed, remove signature and quote parts if empty.
(ComposerPageState::getHtml): Generate HTML using clones of the three
parts, so we can rmeove contenteditable and focus classes without
modifying the actual DOM.
(ComposerPageState::selectionChanged): Update focus class on parts as
needed.
* ui/conversation-web-view.js
(ConversationPageState::createControllableQuotes): Only add control
buttons if the quote is controllable. Calculat the height difference up
front, not in the control button's click handler, so the value is
correct.
* test/client/components/client-web-view-test.vala: New explicit tests
for init'ing the WebContext and loading default resources.
* test/client/components/client-web-view-test-case.vala:
Init the WebContext and load resources in the constructor rather than
fixture setup, so it only happens once per suite, not once per
test. Update subclasses to do same.
* test/client/composer/composer-web-view-test.vala: Add an explicit test
for loading ComposerWebView resources.
* src/client/composer/composer-link-popover.vala:
Gtk.Popover::set_default_widget is only available in GTK+ 3.18,
Gtk.Widget::set_tooltop_text param can't be null in earlier GTK vala
bindings.
* src/client/composer/composer-link-popover.vala (ComposerLinkPopover):
Replace calls to GTK 3.22-specific ::popdown() with ::hide().
* src/engine/util/util-js.vala (Geary.JS): Replace '\v' literal,
unsupported on at least valac 0.30.1 and gcc 5.4, with ordinal equiv.
* ui/conversation-web-view.js (ConversationPageState::createControllableQuotes):
Since WK does not want to seem to reduce the value of offsetHeight for
the HTML element when a quote is collapsed, calculate the difference
and manually update the preferred height.
* ui/client-web-view.js (PageState::updatePreferredHeight): Allow the new
preferred height to be passed in as a param.
* src/client/composer/composer-link-popover.vala
(ComposerLinkPopover::show): Focus URL entry on being shown.
* ui/composer-link-popover.ui: Replace URL entry text label with an
accessibility name. Refine the tooltip for the insert button, add notes
to translators about it.
* src/client/composer/composer-web-view.vala (ComposerWebView): Add
::save_selection and ::free_selection to allow the selection to be
saved when inserting a link. Thunk calls to JS.
(ComposerWebView::insert_link): Add selection id param, pass through to
JS.
* src/client/composer/composer-widget.vala
(ComposerWidget::new_link_popover): Manage saving the editor's
selection, passing its id when inserting a link, freeing it
again. Convert into an async method so we can wait for the selection id
to get back from the WebProcess, update call sites.
(ComposerWidget::on_insert_link): Disconnect and reconnect selection
changed signal so the popover isn't dismissed when the selection does
change/
* ui/composer-web-view.js (ComposerPageState): Implement new
::saveSelection, ::freeSelection and selectionId param on ::insertLink.
* src/client/application/geary-controller.vala
(GearyController::open_async): Pass new cache dir through to
ClientWebView::init_web_context. Update avatar cache dir name to remove
redundancy.
* src/client/components/client-web-view.vala
(ClientWebView::init_web_context): Add additional cache dir para and
update call sites. Use to construct a WebsiteDataManager
instance. Construct a new WebContext using the data manager, and use
that instead of the default one when creating new ClientWebView
instances.
* src/client/composer/composer-embed.vala: Use scroll events captured on
the composer to manage the height of the composer, and forward through
to the conversation viewer's scrolled window and the editor as
needed. Remove code dependent on the editor having a scrolled
window (it doesn't) or access to the DOM (we don't).