diff --git a/project/effectrow.cpp b/project/effectrow.cpp index da203fd74..2dc6dae98 100644 --- a/project/effectrow.cpp +++ b/project/effectrow.cpp @@ -68,6 +68,7 @@ void EffectRow::set_keyframe_enabled(bool enabled) { ca->append(new KeyframeDelete(f, 0)); } } + ca->append(new SetKeyframing(this, false)); undo_stack.push(ca); panel_effect_controls->update_keyframes(); } else { diff --git a/project/undo.cpp b/project/undo.cpp index a8f7eacda..9b3aafe23 100644 --- a/project/undo.cpp +++ b/project/undo.cpp @@ -1291,3 +1291,16 @@ void KeyframeFieldSet::redo() { } done = true; } + +SetKeyframing::SetKeyframing(EffectRow *irow, bool ib) : + row(irow), + b(ib) +{} + +void SetKeyframing::undo() { + row->setKeyframing(!b); +} + +void SetKeyframing::redo() { + row->setKeyframing(b); +} diff --git a/project/undo.h b/project/undo.h index c2e9f62a9..ab8fdba95 100644 --- a/project/undo.h +++ b/project/undo.h @@ -641,4 +641,14 @@ private: QVariant new_val; }; +class SetKeyframing : public QUndoCommand { +public: + SetKeyframing(EffectRow* irow, bool ib); + void undo(); + void redo(); +private: + EffectRow* row; + bool b; +}; + #endif // UNDO_H diff --git a/ui/graphview.cpp b/ui/graphview.cpp index 67f271910..ea8d4ecac 100644 --- a/ui/graphview.cpp +++ b/ui/graphview.cpp @@ -713,10 +713,6 @@ void GraphView::wheelEvent(QWheelEvent *event) { double new_zoom = (event->angleDelta().y() < 0) ? zoom - zoom_diff : zoom + zoom_diff; // center zoom on screen - /*set_scroll_x(qRound(x_scroll + double(event->pos().x())*new_zoom - double(event->pos().x())*zoom)); - set_scroll_y(qRound(y_scroll + double(height()-event->pos().y())*new_zoom - double(height()-event->pos().y())*zoom));*/ - /*set_scroll_x(qRound((double(x_scroll)/zoom*new_zoom) + (double(event->pos().x())/zoom*new_zoom))); - set_scroll_y(qRound((double(y_scroll)/zoom*new_zoom)));*/ set_scroll_x(qRound((double(x_scroll)/zoom*new_zoom) + double(event->pos().x())*new_zoom - double(event->pos().x())*zoom)); set_scroll_y(qRound((double(y_scroll)/zoom*new_zoom) + double(height()-event->pos().y())*new_zoom - double(height()-event->pos().y())*zoom));