Add private HeaderRow and EntryHeaderRow widgets for displaying editable
headers in the composer, convert to using that to wrap up common
properties and functionality for each of the header rows.
Rename `UpgradeDialog` to `DatabaseManager` since it's not actually a
dialog, move it into the APplication package. Replace old Glade UI file
with a custom built dialog since it's trivial and so we can make it
modal for a main window.
Fixes#1007
Use CSS instead of widget props to ensure widgets have sufficient
white space.
This will allow adding additional action bars (e.g. by plugins) in a
more straight-forward manner.
Remove stock infobars from ConversationEmail and ConversationMessage
builder files. Use common ComponentsInfobar for remote image loading
infobar. Use Components.InfoBarStack in ConversationMessage for plugin
support.
Create new Application.AttachmentManager class and move code for saving
attachments there from both Application.Controller and MainWindow since
aside from needing the latter for dialogs it is independent of both.
Create new Components.AttachmentPane widget for diplaying attachents
for an email in the ConversationViewer.
Update ConversationEmail and ConversationMessage to use these two new
classes directly, rather than implementing save management itself or
requiring the MainWindow to wire up signals on these classes.
Remove the first/last child hacks from ConversationListBox since the
GTK+ fix for :first-class and :last-class landed in early 3.22.x
releases. Ensure the first expanded email is properly size-allocated
before loading others, that it remains unmoving in the list as other
rows are added, add a loading bar above it when there are more email to
load below it.
Paint the row that was picked up as the drag icon, dim the actual row
and don't highlight it when dragging over itself.
Icon drawing code courtesy ebassi's tutorial:
https://blog.gtk.org/2017/04/23/drag-and-drop-in-lists/
* src/client/components/main-window-info-bar.vala (MainWindowInfoBar):
New class and UI file for displaying an info bar in the main window, as
well as providing a way to show technical informartion if needed.
* src/client/components/main-window.vala (MainWindow): Add a Gtk.Frame
and container to hold inforbar instances. Show it when showing an
infobar, and hide it when there are none. Add show_infobar() method to
provide a cromulent way of adding info bars.
* src/client/application/geary-controller.vala (BaseObject): Rather than
bailing out on an account when an error occurs, display an info bar
instead.
* ui/geary.css: Style the info bar frame to only show a border between
main content and the info bars.
Bug 778033
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage::highlight_search_terms): Also check the subject
for matching items and highlight if found.
* src/client/conversation-viewer/conversation-list-box.vala
(ConversationListBox::EmailRow): Update matching row class to
disambiguate from matching headers.
* ui/geary.css: Ensure matching subject labels get highlighted.
* ui/conversation-viewer.ui,
src/client/conversation-viewer/conversation-viewer.vala: next-match and
previous-match signals are only available in GTK+ >= 3.16.
* ui/empty-placeholder.ui: Drop declared GTK+ requirement to 3.14.
* ui/geary.css: The :not() pseudeo class is only available in GTK+ >= 3.20.
* 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.
* 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.