There are two problem cases:
1) the drag "fake-located" the playhead, but a redraw happens before the locate itself finishes.
2) the transport emits Session::PositionChanged from Session::non_realtime_stop(), even though
this is occuring in the "middle" of the locate process (we stop first).
In the first case, the drag code sets _pending_locate_request, since we need this to be true even
before the queued SessionEvent for the locate has been processed. So to deal with this case
In the second case, we use Session::locate_initiated() to decide if we're in the middle of a locate.
To reproduce. Launch, right click in ruler area then drag down
until over the master track and let go.
#0 0x0000555555ba1d44 in boost::shared_ptr<ARDOUR::Route>::get() const (this=0x8) at /usr/include/boost/smart_ptr/shared_ptr.hpp:748
#1 0x0000555555ba0a2f in boost::dynamic_pointer_cast<ARDOUR::Track, ARDOUR::Route>(boost::shared_ptr<ARDOUR::Route> const&) (r=...)
at /usr/include/boost/smart_ptr/shared_ptr.hpp:904
#2 0x000055555650b92b in RouteUI::track() const (this=0x0) at ../gtk2_ardour/route_ui.cc:1885
#3 0x0000555555d0b92f in Editor::popup_track_context_menu(int, int, ItemType, bool) (this=
0x555557a3efd0, button=1, time=600214966, item_type=StreamItem, with_selection=false) at ../gtk2_ardour/editor.cc:1595
#4 0x0000555555e1a4cf in Editor::button_release_handler(ArdourCanvas::Item*, _GdkEvent*, ItemType) (this=0x555557a3efd0, item=
0x555557b2fe00, event=0x7fffffffc310, item_type=StreamItem) at ../gtk2_ardour/editor_mouse.cc:1543
....
When a plugin is deleted, automation-lanes of the given plugin
are removed, but previously a pointed to the deleted lane remained
in the selection.
This caused crashes later when the track selection is used. e.g.
during sensitize_the_right_region_actions()
Note that ~TimeAxisView() also emits CatchDeletion (this);
however "this" fails to be dynamic_cast<AutomationTimeAxisView*>
because that d'tor has already been completed.
Copyright-holder and year information is extracted from git log.
git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
Duplicate the remove_unsued_region action in the Session->Cleanup menu, for discoverability.
Region list should use the same Region actions as the canvas...
OK, now resolve the change in use-cases of Region List and Source List. tentative.
Rough-in remove_selected_sources (Delete in Sources list).
Column tweaks.
A Gtk::manage()d widget will be deleted when its parent container
is destroyed. Top-level context menus are not inside a container and
hence need to be manually deallocated.
This adds explicit delete calls for menus where there is a
member variable reference to the Menu.
Per session (instant.xml) GUI options do not have a sigc::slot<> backed
configuration interface to initialize the Actions.
This fixes a first-time start issue (no instant.xml) where GUI panes
may be visible (default) while the actions are "off" (default).
This is a tentative solution, instant.xml backed ToggleAction
initialization needs to be consolidated somehow.
Previously Editor::instant_save() returned if no session was loaded,
effectively Config->add_instant_xml(get_state()); was never called.
instant save() is called early on, in Editor's c'tor before the editor
is realized and saves invalid window-size and window-state, which
are used later.
Previously EditorAction and ExitorHook scripts were saved with
instant.xml. The were saved with each session and in the config
dir (for new sessions). This allowed inconsistent UI setups, especially
when loading old sessions that had no or different scripts.
Now Editor scripts (actions and hooks) are saved in a dedicated file,
session-independently. This goes along with ui_config in general
e.g. action-table-columns
The scripts are not saved with ui_config file for two reasons:
ui_config settings related to built-in ui_config_vars.h,
and in the future there may be further indirection like "ui-rc-file".
Note: previously loaded editor scripts are lost with this change.