if (!drag_info.move_threshold_passed) {
drag_info.move_threshold_passed = (abs ((int) (drag_info.current_pointer_x - drag_info.grab_x)) > 4);
-
- /* if we are dragging Regions we must also consider a change in track
- ** as passing the move threshold, otherwise e.g. copying regions to
- ** the same temporal position on a different track doesn't work.
- */
- if (drag_info.item_type == RegionItem && drag_info.data) {
- RegionView* rv = reinterpret_cast<RegionView *> (drag_info.data);
- if (drag_info.last_trackview != &rv->get_time_axis_view()) {
- drag_info.move_threshold_passed = true;
- }
+
+ if (drag_info.copy && !drag_info.move_threshold_passed) {
+ drag_info.move_threshold_passed = (abs ((int) (drag_info.current_pointer_y - drag_info.grab_y)) > 4);
}
-
+
// and change the initial grab loc/frame if this drag info wants us to
if (drag_info.want_move_threshold && drag_info.move_threshold_passed) {
vector<int32_t> height_list(512) ;
vector<int32_t>::iterator j;
- if (drag_info.copy && drag_info.move_threshold_passed && drag_info.want_move_threshold) {
+ /* don't copy regions if we're doing x-constrained and we're in the same track, or
+ if we haven't passed the move threshold yet
+ */
+
+ if ((drag_info.x_constrained && (drag_info.last_trackview != &rv->get_time_axis_view())) &&
+ drag_info.copy && drag_info.move_threshold_passed && drag_info.want_move_threshold) {
drag_info.want_move_threshold = false; // don't copy again
latest_regionview = 0;
-
/* create a new region with the same name. */
// FIXME: ew. need a (virtual) Region::duplicate() or something?
}
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Mixer_UI::group_flags_changed), src, group));
+
+ /* force an update of any mixer strips that are using this group,
+ otherwise mix group names don't change in mixer strips
+ */
+
+ for (list<MixerStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
+ if ((*i)->mix_group() == group) {
+ (*i)->mix_group_changed(0);
+ }
+ }
TreeModel::iterator i;
TreeModel::Children rows = group_model->children();