You may not agree with all points, but I'm just throwing ideas on the table hoping to get the ball rolling.
1) Comprehensive undo:
At the moment there are too many critical actions in FL that can't be undone:
- Load/replace/delete/copy/move/etc actions (here is an example of a situation when this can be useful)
- Load/replace/delete sample: When a sample is dropped into the playlist, if you undo the sample is removed from the playlist but it remains in the channel rack, so it doesn't fully undo.
- Rename, change colour, change icon, etc
- Anything that affects sound
2) Separate per-plugin undo
Somewhat related to the previous point, the plugin wrapper window could have it's on independent undo/redo history and buttons in the title bar, to keep plugin tweaks separate from the main undo. Some plugins already have this built-in (for example, some IL plugins and all of U-he plugins) and I think it's very effective, but some plugins still don't have it. By building this into the wrapper, all plugins would have it:
- Right-click either arrow button to display a context menu showing a list of the last N tweaks for the focused plugin.
- Nice to have: A "spare state" compare function like in some IL plugins but in the title bar so all plugins can have the spare state feature.
At the moment, if I turn a knob with the mouse and then stop moving BUT still keeping the mouse button held down, wait a couple of seconds without moving the mouse, and then start moving again, FL will add a new 'Knob tweak' item to the undo history each time, rather than just once. This results in the undo history filling up with unnecessary 'Knob tweak' actions.ñ
This implementation makes sense only for tweaks performed from a MIDI controller or with the mouse wheel, because FL has no way of knowing when the tweak starts and ends (in other words, FL is not very good at reading the user's mind). But when using the mouse, it's very easy to detect the start (mouse button pressed) and end (mouse button released) of the tweak, therefore it would be more effective if FL could intelligently take advantage of this fact. Edit: Please download the free version of Studio One, it implements this the way I describe (mouse wheel and mouse-click-drag are treated differently).
4) Undo history list order the right way up:
At the moment the undo history shows the most recent actions at the bottom of the list, so you have to scroll-scroll-scroll all the way down to the bottom every time you want to inspect the recent undo history. It would be better to show the most recent items at the top like, say, Microsoft Excel:
5) Undo keyboard shortcut:
Please make Ctrl+Z = Undo and Ctrl+Shift+Z = Redo—in this day and age this is the universal de facto standard used by every piece of software out there. Even Photoshop, which once worked like FL, now works the universal way. Every single FL user has had to google "how do I undo more than once in FL?". How I think it should be:
- Ctrl+Z = Undo. Statistically you use Undo more than Redo, in any software. I actually wrote a script to count the number of times I used each command over the course of the day and, as expected, it turned out that I hardly ever use Redo. For that reason, it makes sense to bind Undo to the simpler keyboard shortcut Ctrl+Z, not the more convoluted one Shift+Ctrl+Z which on some keyboards is not convenient to press.
- Shif+Ctrlt+Z = Redo, and if there is nothing to redo, then undo once. This way we still have the "compare" functionality some users like so much. I think this is a happy compromise, no?
- Main window toolbar needs both undo AND redo buttons that work the universal way, not just an undo button that can undo only step. This would be especially welcome for those of us who use FL on touch devices.