13
0

update selection clock

This commit is contained in:
Robin Gareus 2015-01-21 22:26:14 +01:00
parent c7c8cc7dc7
commit 01d99870ff
2 changed files with 30 additions and 0 deletions

View File

@ -149,6 +149,7 @@ TimeInfoBox::TimeInfoBox ()
Editor::instance().get_selection().TimeChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
Editor::instance().get_selection().RegionsChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
Region::RegionPropertyChanged.connect (region_property_connections, invalidator (*this), boost::bind (&TimeInfoBox::region_property_change, this, _1, _2), gui_context());
Editor::instance().MouseModeChanged.connect (editor_connections, invalidator(*this), boost::bind (&TimeInfoBox::track_mouse_mode, this), gui_context());
}
@ -168,6 +169,33 @@ TimeInfoBox::track_mouse_mode ()
selection_changed ();
}
void
TimeInfoBox::region_property_change (boost::shared_ptr<ARDOUR::Region> /* r */, const PBD::PropertyChange& what_changed)
{
Selection& selection (Editor::instance().get_selection());
if (selection.regions.empty()) {
return;
}
PBD::PropertyChange our_interests;
our_interests.add (ARDOUR::Properties::position);
our_interests.add (ARDOUR::Properties::length);
our_interests.add (ARDOUR::Properties::start);
if (!what_changed.contains (our_interests)) {
return;
}
/* TODO: check if RegionSelection includes the given region.
* This is not straight foward because RegionSelection is done by
* RegionView (not Region itself).
*/
selection_changed ();
}
bool
TimeInfoBox::clock_button_release_event (GdkEventButton* ev, AudioClock* src)
{

View File

@ -69,6 +69,7 @@ class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
void watch_punch (ARDOUR::Location*);
PBD::ScopedConnectionList punch_connections;
PBD::ScopedConnectionList editor_connections;
PBD::ScopedConnectionList region_property_connections;
ArdourButton punch_in_button;
ArdourButton punch_out_button;
@ -80,6 +81,7 @@ class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
bool clock_button_release_event (GdkEventButton* ev, AudioClock* src);
void track_mouse_mode ();
void region_property_change (boost::shared_ptr<ARDOUR::Region> r, const PBD::PropertyChange& what_changed);
};