correctly track range selection trim and drag creation w.r.t playback priority
This commit is contained in:
parent
aefd089b88
commit
7592b5d3e1
@ -96,8 +96,6 @@ DragManager::abort ()
|
|||||||
{
|
{
|
||||||
_ending = true;
|
_ending = true;
|
||||||
|
|
||||||
cerr << "Aborting drag\n";
|
|
||||||
|
|
||||||
for (list<Drag*>::const_iterator i = _drags.begin(); i != _drags.end(); ++i) {
|
for (list<Drag*>::const_iterator i = _drags.begin(); i != _drags.end(); ++i) {
|
||||||
(*i)->abort ();
|
(*i)->abort ();
|
||||||
delete *i;
|
delete *i;
|
||||||
@ -4895,7 +4893,7 @@ SelectionDrag::finished (GdkEvent* event, bool movement_occurred)
|
|||||||
|
|
||||||
/* XXX what if its a music time selection? */
|
/* XXX what if its a music time selection? */
|
||||||
if (s) {
|
if (s) {
|
||||||
if ( s->get_play_range() && s->transport_rolling() ) {
|
if (s->get_play_range() && s->transport_rolling()) {
|
||||||
s->request_play_range (&_editor->selection->time, true);
|
s->request_play_range (&_editor->selection->time, true);
|
||||||
} else {
|
} else {
|
||||||
if (ARDOUR_UI::config()->get_follow_edits() && !s->transport_rolling()) {
|
if (ARDOUR_UI::config()->get_follow_edits() && !s->transport_rolling()) {
|
||||||
@ -4905,6 +4903,12 @@ SelectionDrag::finished (GdkEvent* event, bool movement_occurred)
|
|||||||
s->request_locate (_editor->get_selection().time.start());
|
s->request_locate (_editor->get_selection().time.start());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_editor->get_selection().time.length() != 0) {
|
||||||
|
s->set_range_selection (_editor->get_selection().time.start(), _editor->get_selection().time.end_frame());
|
||||||
|
} else {
|
||||||
|
s->clear_range_selection ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "control_protocol/control_protocol.h"
|
#include "control_protocol/control_protocol.h"
|
||||||
|
|
||||||
|
#include "editor_drag.h"
|
||||||
#include "editor.h"
|
#include "editor.h"
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "audio_time_axis.h"
|
#include "audio_time_axis.h"
|
||||||
@ -1031,9 +1032,12 @@ Editor::time_selection_changed ()
|
|||||||
ActionManager::set_sensitive (ActionManager::time_selection_sensitive_actions, true);
|
ActionManager::set_sensitive (ActionManager::time_selection_sensitive_actions, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* propagate into backend */
|
/* propagate into backend, but only when there is no drag or we are at
|
||||||
|
* the end of a drag, otherwise this is too expensive (could case a
|
||||||
|
* locate per mouse motion event.
|
||||||
|
*/
|
||||||
|
|
||||||
if (_session) {
|
if (_session && !_drags->active()) {
|
||||||
if (selection->time.length() != 0) {
|
if (selection->time.length() != 0) {
|
||||||
_session->set_range_selection (selection->time.start(), selection->time.end_frame());
|
_session->set_range_selection (selection->time.start(), selection->time.end_frame());
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user