add Autosave continuous backups by Andras Reuss and Andrew-R
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / keyframepopup.C
index 8c8e582b8bd1d3a6a9578b240be3f0eaa377541f..c3dcaea1c73024d3f0ee7980e749f1ec78cb8187 100644 (file)
@@ -200,7 +200,7 @@ int KeyframePopupDelete::handle_event()
        mwindow->undo->update_undo_before(_("delete keyframe"), 0);
        mwindow->speed_before();
        delete popup->keyframe_auto;
-       mwindow->speed_after(1);
+       mwindow->speed_after(1, 1);
        mwindow->undo->update_undo_after(_("delete keyframe"), LOAD_ALL);
 
        mwindow->save_backup();
@@ -629,6 +629,7 @@ KeySpeedPatch::KeySpeedPatch(MWindow *mwindow, PatchGUI *gui,
 {
        this->mwindow = mwindow;
        this->gui = gui;
+       need_undo = 1;
 }
 KeySpeedPatch::~KeySpeedPatch()
 {
@@ -693,8 +694,10 @@ void KeySpeedPatch::update_speed(float v)
        float change = v - current->get_value(gui->edge);
        if( !change ) return;
        gui->change_source = 1;
-       int need_undo = !speed_autos->auto_exists_for_editing(position);
-       mwindow->undo->update_undo_before(_("speed"), need_undo ? 0 : this);
+       if( need_undo ) {
+               need_undo = 0;
+               mwindow->undo->update_undo_before(_("speed"), this);
+       }
        current->bump_value(v, gui->edge, gui->span);
        if( track->is_ganged() ) {
                TrackCanvas *track_canvas = gui->patchbay->pane->canvas;
@@ -702,8 +705,6 @@ void KeySpeedPatch::update_speed(float v)
                track_canvas->update_ganged_autos(0, track, current);
                track_canvas->clear_ganged_autos();
        }
-       mwindow->undo->update_undo_after(_("speed"),
-                       LOAD_AUTOMATION + LOAD_EDITS + LOAD_TIMEBAR);
        gui->change_source = 0;
 
        mwindow->sync_parameters(CHANGE_PARAMS);
@@ -721,7 +722,11 @@ KeySpeedOK::KeySpeedOK(KeySpeedPatch *key_speed_patch, int x, int y, VFrame **im
 int KeySpeedOK::handle_event()
 {
        MWindow *mwindow = key_speed_patch->mwindow;
-       mwindow->speed_after(1);
+       mwindow->speed_after(1, 1);
+       if( !key_speed_patch->need_undo ) {
+               mwindow->undo->update_undo_after(_("speed"),
+                       LOAD_AUTOMATION + LOAD_EDITS + LOAD_TIMEBAR);
+       }
        mwindow->resync_guis();
        mwindow->gui->close_keyvalue_popup();
        return 1;