Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / keyframepopup.C
index b94ae1521bc94d7094715c80b7f09e6d43cf29ed..b2992006c8873fea456be276ac40cbf4005cfaed 100644 (file)
@@ -2,6 +2,7 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -200,7 +201,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 +630,7 @@ KeySpeedPatch::KeySpeedPatch(MWindow *mwindow, PatchGUI *gui,
 {
        this->mwindow = mwindow;
        this->gui = gui;
+       need_undo = 1;
 }
 KeySpeedPatch::~KeySpeedPatch()
 {
@@ -693,8 +695,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 +706,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 +723,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;
@@ -770,7 +776,7 @@ int KeySpeedSlider::handle_event()
 KeySpeedAutoEdge::KeySpeedAutoEdge(MWindow *mwindow,
                KeySpeedPatch *patch, int x, int y)
  : BC_Toggle(x, y, mwindow->theme->get_image_set("bump_edge"),
-                patch->gui->span,_("Edge"))
+                patch->gui->edge,_("Edge"))
 {
        this->mwindow = mwindow;
        this->patch = patch;