X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fedit.C;h=5fab82ea4fb6f9876b89e1bbb160fc3b4d4696ce;hb=85a4302e7031b0285aeb9559aa6dbc531db6e443;hp=f32d1c15cfef084a7c195eed0f3afbb63f5cda78;hpb=48a6854a1ca58aa291ffc6fe3a48807492dfbef7;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/edit.C b/cinelerra-5.1/cinelerra/edit.C index f32d1c15..5fab82ea 100644 --- a/cinelerra-5.1/cinelerra/edit.C +++ b/cinelerra-5.1/cinelerra/edit.C @@ -234,8 +234,23 @@ void Edit::insert_transition(char *title) void Edit::detach_transition() { - if(transition) delete transition; + delete transition; transition = 0; + if( edl->local_session->gang_tracks == GANG_NONE ) return; + double pos = track->from_units(startproject); + Track *current = edl->tracks->first; + for( ; current; current=current->next ) { + if( current == track ) continue; + if( current->data_type != track->data_type ) continue; + if( !current->armed_gang(track) ) continue; + int64_t track_pos = current->to_units(pos, 1); + Edit *edit = current->edits->editof(track_pos, PLAY_FORWARD, 0); + if( !edit ) continue; + double edit_pos = track->from_units(edit->startproject); + if( !edl->equivalent(pos, edit_pos) ) continue; + delete edit->transition; + edit->transition = 0; + } } int Edit::silence() @@ -249,7 +264,7 @@ void Edit::set_selected(int v) { if( !group_id ) { if( v < 0 ) v = !is_selected ? 1 : 0; - int gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0; + int gang = edl->local_session->gang_tracks != GANG_NONE ? 1 : 0; select_affected_edits(v, gang); } else