+ case DRAG_GROUP:
+ if( mwindow->session->track_highlighted && mwindow->session->drag_group &&
+ mwindow->session->drag_group_edit && mwindow->session->drag_group_first_track ) {
+ Track *track = mwindow->session->track_highlighted;
+ EDL *drag_group = mwindow->session->drag_group;
+ Track *edit_track = mwindow->session->drag_group_edit->track;
+ Track *drag_track = mwindow->session->drag_group_first_track;
+ while( track && edit_track && edit_track != drag_track ) {
+ edit_track = edit_track->previous;
+ track = track->previous;
+ }
+ int cx = get_cursor_x();
+ double cur_pos = mwindow->session->drag_group_position;
+ double new_pos = mwindow->edl->get_cursor_position(cx, pane->number);
+ new_pos -= mwindow->session->drag_position - cur_pos;
+ new_pos = mwindow->edl->align_to_frame(new_pos, 0);
+ double drop_position = new_pos;
+ int color = GREEN;
+ int ret = test_track_group(drag_group, track, new_pos);
+ if( !ret && new_pos != drop_position ) {
+ double pos = new_pos;
+ pos += mwindow->session->drag_position - cur_pos;
+ cx = mwindow->edl->get_position_cursorx(pos, pane->number);
+ ret = test_track_group(drag_group, track, new_pos);
+ color = ret ? YELLOW : RED;
+ }
+ else if( !ret )
+ color = RED;
+ track_dimensions(mwindow->session->track_highlighted, x, y, w, h);
+ int dx = cx - mwindow->session->drag_origin_x;
+ int dy = y - mwindow->session->drag_origin_y;
+ draw_selected_edits(mwindow->edl, dx, dy, color, -1);
+ }
+ break;