X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindowedit.C;h=e128a19bfdd68767466fd22ecaf1706fae82c107;hb=ad2996ab94e6e12c9c14a5b9f14792f76111dff7;hp=0e4121b121ae18e17b414cedc264912507ac5cc0;hpb=3ac72077bee819333ea9e8c3c3307b529ecf3647;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/mwindowedit.C b/cinelerra-5.1/cinelerra/mwindowedit.C index 0e4121b1..e128a19b 100644 --- a/cinelerra-5.1/cinelerra/mwindowedit.C +++ b/cinelerra-5.1/cinelerra/mwindowedit.C @@ -514,7 +514,26 @@ void MWindow::cut() { double start = edl->local_session->get_selectionstart(); double end = edl->local_session->get_selectionend(); - cut(start, end); + if( EQUIV(start,end) ) + blade(start); + else + cut(start, end); +} + +void MWindow::blade(double position) +{ + undo->update_undo_before(); + edl->blade(position); + edl->optimize(); + save_backup(); + undo->update_undo_after(_("blade"), LOAD_EDITS | LOAD_TIMEBAR); + restart_brender(); + update_plugin_guis(); + gui->update(1, 2, 1, 1, 1, 1, 0); + cwindow->update(1, 0, 0, 0, 1); + awindow->gui->async_update_assets(); + cwindow->playback_engine->que-> + send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); } void MWindow::cut(double start, double end, double new_position) @@ -526,7 +545,6 @@ void MWindow::cut(double start, double end, double new_position) edl->session->plugins_follow_edits, edl->session->autos_follow_edits); - edl->optimize(); save_backup(); undo->update_undo_after(_("cut"), LOAD_EDITS | LOAD_TIMEBAR); @@ -538,6 +556,7 @@ void MWindow::cut(double start, double end, double new_position) update_plugin_guis(); gui->update(1, 2, 1, 1, 1, 1, 0); cwindow->update(1, 0, 0, 0, 1); + awindow->gui->async_update_assets(); cwindow->playback_engine->que-> send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); } @@ -862,15 +881,18 @@ void MWindow::finish_modify_handles() if( (session->drag_handle == 1 && edit_mode != MOVE_NO_EDITS) || (session->drag_handle == 0 && edit_mode == MOVE_ONE_EDIT) ) { +//printf("MWindow::finish_modify_handles %d\n", __LINE__); edl->local_session->set_selectionstart(session->drag_position); edl->local_session->set_selectionend(session->drag_position); } else if( edit_mode != MOVE_NO_EDITS ) { +//printf("MWindow::finish_modify_handles %d\n", __LINE__); edl->local_session->set_selectionstart(session->drag_start); edl->local_session->set_selectionend(session->drag_start); } +// clamp the selection to 0 if( edl->local_session->get_selectionstart(1) < 0 ) { edl->local_session->set_selectionstart(0); edl->local_session->set_selectionend(0); @@ -882,6 +904,8 @@ void MWindow::finish_modify_handles() sync_parameters(CHANGE_EDL); update_plugin_guis(); gui->update(1, 2, 1, 1, 1, 1, 0); +// label list can be modified + awindow->gui->async_update_assets(); cwindow->update(1, 0, 0, 0, 1); } @@ -1047,6 +1071,7 @@ void MWindow::mute_selection() edl->paste_silence(start, end, 0, edl->session->plugins_follow_edits, edl->session->autos_follow_edits); + save_backup(); undo->update_undo_after(_("mute"), LOAD_EDITS); @@ -1076,7 +1101,7 @@ void MWindow::overwrite(EDL *source) } source->copy(src_start, src_start + overwrite_len, - 1, 0, 0, &file, "", 1); + 0, 0, 0, &file, "", 1); // HACK around paste_edl get_start/endselection on its own // so we need to clear only when not using both io points @@ -1314,7 +1339,7 @@ int MWindow::paste_edls(ArrayList *new_edls, int load_mode, if( !new_edls->total ) return 0; //PRINT_TRACE -// double original_length = edl->tracks->total_playable_length(); +// double original_length = edl->tracks->total_length(); // double original_preview_end = edl->local_session->preview_end; //PRINT_TRACE @@ -1328,6 +1353,7 @@ int MWindow::paste_edls(ArrayList *new_edls, int load_mode, edl = new EDL; edl->create_objects(); edl->copy_session(new_edls->values[0]); + edl->copy_mixers(new_edls->values[0]); gui->mainmenu->update_toggles(0); gui->unlock_window(); gwindow->gui->update_toggles(1); @@ -1589,7 +1615,7 @@ int MWindow::paste_edls(ArrayList *new_edls, int load_mode, // Fix preview range // if( EQUIV(original_length, original_preview_end) ) // { -// edl->local_session->preview_end = edl->tracks->total_playable_length(); +// edl->local_session->preview_end = edl->tracks->total_length(); // } // Start examining next batch of index files @@ -1861,20 +1887,8 @@ void MWindow::set_transition_length(double length) void MWindow::redo_entry(BC_WindowBase *calling_window_gui) { - calling_window_gui->unlock_window(); - - cwindow->playback_engine->que-> - send_command(STOP, CHANGE_NONE, 0, 0); - cwindow->playback_engine->interrupt_playback(0); - - for( int i = 0; i < vwindows.size(); i++ ) { - if( vwindows.get(i)->is_running() ) { - vwindows.get(i)->playback_engine->que-> - send_command(STOP, CHANGE_NONE, 0, 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); - } - } + stop_playback(0); cwindow->gui->lock_window("MWindow::redo_entry"); for( int i = 0; i < vwindows.size(); i++ ) { @@ -1891,6 +1905,7 @@ void MWindow::redo_entry(BC_WindowBase *calling_window_gui) save_backup(); update_plugin_states(); update_plugin_guis(); + awindow->gui->async_update_assets(); restart_brender(); gui->update(1, 2, 1, 1, 1, 1, 1); cwindow->update(1, 1, 1, 1, 1); @@ -2056,7 +2071,7 @@ void MWindow::save_clip(EDL *new_edl, const char *txt) edl->update_assets(new_edl); int cur_x, cur_y; - gui->get_abs_cursor_xy(cur_x, cur_y, 0); + gui->get_abs_cursor(cur_x, cur_y, 0); gui->unlock_window(); awindow->clip_edit->create_clip(new_edl, cur_x, cur_y); @@ -2151,6 +2166,7 @@ void MWindow::trim_selection() update_plugin_guis(); gui->update(1, 2, 1, 1, 1, 1, 0); cwindow->update(1, 0, 0, 0, 1); + awindow->gui->async_update_assets(); restart_brender(); cwindow->playback_engine->que-> send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); @@ -2160,19 +2176,7 @@ void MWindow::trim_selection() void MWindow::undo_entry(BC_WindowBase *calling_window_gui) { calling_window_gui->unlock_window(); - - cwindow->playback_engine->que-> - send_command(STOP, CHANGE_NONE, 0, 0); - cwindow->playback_engine->interrupt_playback(0); - -//printf("MWindow::undo_entry %d %d\n", __LINE__, vwindows.size()); - for( int i = 0; i < vwindows.size(); i++ ) { - if( vwindows.get(i)->is_running() ) { - vwindows.get(i)->playback_engine->que-> - send_command(STOP, CHANGE_NONE, 0, 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); - } - } + stop_playback(0); cwindow->gui->lock_window("MWindow::undo_entry 1"); for( int i = 0; i < vwindows.size(); i++ ) {