Move Revokable has 1 minute commit timeout that is cancelled under
certain circumstances. Bug was that the "valid" property change would
trigger a cancel even if valid was set to true (but unchanged).
This patch now checks for !valid before cancelling. Also, the one-way
transition from valid -> !valid is now enforced through Revokable's
interface.
This prevents a lot of extraneous (and often erroring) operations
when Geary closes, particularly due to the conversation and folder
list selections changing as items are removed.
The Ambiance theme isn't smart enough to give headerbars square corners
when they aren't being used as title bars. In this case, they're always
inside vertical Gtk.Boxes, so we target a CSS rule at that.
https://bugzilla.gnome.org/show_bug.cgi?id=746172
Robert reported an exit hang while closing the Account object. I
suspect it's in the ClientSessionManager but can't be sure. This
logging may help give a clue if it happens again.
Also, some old crufty code was relying on the sessions mutex lock
state being passed around, not a great way of doing things.
Some code was playing loosey-goosey with the ClientSession IN_PROGRESS
Context, which was a general value for "in transition" without
specifying what transition. Now Context (renamed ProtocolState) is
explicit about the transition and the affected code is more selective
about what action it takes in response.
It used to be that all embeded composers had the headerbar inside
themselves, so the ComposerWindow only had to remove it if necessary.
But the new new-composer state doesn't have this, so we have to be
sure. To assist in this, the ComposerWidget now has embed_header() and
free_header() methods.
https://bugzilla.gnome.org/show_bug.cgi?id=746061
This ensures that we only have a single close button for the main window
at any time, and it always closes the whole application. The composer
gets a default close button only when detached.