Hi everybody,
I use the AudioProcessorValueTreeState to handle all states and changes of my plugin.
Is there a way to hook up the undoManager to the daw so that the CMD-Z from the DAW reaches my plugin?
Or should I capture the key strokes and call undo on the undoManager myself?
And how works the beginNewTransaction? How do I mark the end of a transaction, or do I need to call beginNewTransaction each time, even if my transaction is only a single undoableAction?
Thanks for clarification…
daniel
There’s no way to intercept DAW keystrokes like that - you’d need to just use a KeyListener in your editor component.
A common trick for beginNewTransaction is to restart a Timer each time a value changes, so that when things stop changing for e.g. 1 second, it automatically starts a new transaction, but so that it won’t break up a continuous drag gesture.
Thanks, that’s easy to do, I just thought there might be an interface of the plugin wrapper for undo, but obviously not. But as long as the keys are not customizable it’s no problem. otherwise one could end up having a different undo shortcut in the daw and the plugin…
The timer trick is a good idea, thank you. Maybe it could be added in the AudioProcessorValueTreeState, as there the information is present, if a gesture is pending, and the undo manager is linked there… Or maybe a query method like bool AudioProcessorValueTreeState::hasOpenGestures()?
Just to be sure, the beginNewTransaction simply resets something, it’s no problem to add many calls, if nothing happenes in between?