This allows correct reordering of the mixer "track_model" even
when non-route elements are present.
This isn't really utilized in the Editor at present because we do
not show VCAs there at all, but it will become important in the
future when we represent VCA automation there
(supplied order keys are correct).
This really shouldn't be needed, but historically there have been races
between the treeview and the editor order keys.
Interesting to note that there have been no reported ordering bugs when
loading sessions.
This probably breaks some of ardour's functionality (e.g. layered mode), but seems to
be either just right or very close to it for tracks
Conflicts:
gtk2_ardour/editor_routes.cc
This more or less obsoletes the DisplaySuspender.
While RAII is nice, the DisplaySuspender cannot be
used from outside gtk2_ardour eg Mute/Solo signals
notifications from libardour (which don't originate
from the GUI).
The DisplaySuspender is still useful, because it
explicitly disables re-display and forces a single
expose at the end.
ArdourButtons now have a "pushed" animation.
The gradient is now implemented in the button, rather than providing 2 colors in the theme, which was burdensome.
Lots of code cleanup in ArdourButton. Removed several unnecessary flags.
Refactor more stuff into route_ui.
The code relied on the idea that the order-key resync that occurs after deletion would change the order keys and thus cause
a redisplay. But since both the editor and mixer can initiate an order-key resync, the other window's resync will actually
do nothing (the order keys will already be correct). This led to the incorrect placement of material in the tracks canvas,
because the first resync triggered a redisplay while the route still existed, and then the second resync didn't cause a
redisplay (repositioning) but the canvas elements representing the track went away.
Fixed by forcing a redisplay in both editor and mixer if a route deletion is believed to be triggering a row deletion
in their underlying data models.