return true;
}
-struct SelectionOrderSorter {
- bool operator() (TimeAxisView const * const a, TimeAxisView const * const b) const {
- boost::shared_ptr<Stripable> sa = a->stripable ();
- boost::shared_ptr<Stripable> sb = b->stripable ();
- if (!sa && !sb) {
- return a < b;
- }
- if (!sa) {
- return false;
- }
- if (!sb) {
- return true;
- }
- return sa->presentation_info().selection_cnt() < sb->presentation_info().selection_cnt();
- }
-};
-
void
Editor::presentation_info_changed (PropertyChange const & what_changed)
{
void
Editor::track_selection_changed ()
{
+ /* reset paste count, so the plaste location doesn't get incremented
+ * if we want to paste in the same place, but different track. */
+ paste_count = 0;
+
if ( _session->solo_selection_active() )
play_solo_selection(false);
}
}
}
- if ( _session->solo_selection_active() )
+ if (_session->solo_selection_active()) {
play_solo_selection(false);
+ }
+
+ /* set nudge button color */
+ if (! get_regions_from_selection_and_entered().empty()) {
+ /* nudge regions */
+ nudge_forward_button.set_name ("nudge button");
+ nudge_backward_button.set_name ("nudge button");
+ } else {
+ /* nudge marker or playhead */
+ nudge_forward_button.set_name ("generic button");
+ nudge_backward_button.set_name ("generic button");
+ }
}
void
void
Editor::invert_selection ()
{
- list<Selectable *> touched;
if (internal_editing()) {
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
return;
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
- if ((*iter)->hidden()) {
- continue;
+ if (!selection->tracks.empty()) {
+
+ TrackViewList inverted;
+
+ for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+ if (!(*iter)->selected()) {
+ inverted.push_back (*iter);
+ }
}
- (*iter)->get_inverted_selectables (*selection, touched);
- }
- begin_reversible_selection_op (X_("Invert Selection"));
- selection->set (touched);
- commit_reversible_selection_op ();
+ begin_reversible_selection_op (X_("Invert Track Selection"));
+ selection->set (inverted);
+ commit_reversible_selection_op ();
+
+ } else {
+
+ list<Selectable *> touched;
+
+ for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+ if ((*iter)->hidden()) {
+ continue;
+ }
+ (*iter)->get_inverted_selectables (*selection, touched);
+ }
+
+ begin_reversible_selection_op (X_("Invert ObjectSelection"));
+ selection->set (touched);
+ commit_reversible_selection_op ();
+ }
}
/** @param start Start time in session samples.
selection->set (tvl);
- if (!get_smart_mode () || !mouse_mode == Editing::MouseObject) {
+ if (!get_smart_mode () || !(mouse_mode == Editing::MouseObject) ) {
set_mouse_mode (Editing::MouseRange, false);
}
}