When changing the workspace mode, many windows may use the same workspace.
To redo the bug:
- Factory settings.
- Duplicate the window.
- Add a New Scene (Full Copy)
- Enter Editmode
... currently this asserts. It should enter editmode on both objects.
So changing a mode should loop over all windows and change each windows mode (exiting/entering the existing mode as needed).
I think this is more of a problem than it sounds, because switching modes causes undo pushes - and may fail in some cases (changing from edit-mode to weight paint mode would need to leave curve objects in object mode for example).
Modes need switching from RNA update callbacks, and lower level code. eg: changing the active scene from Python.
We could do this in the main event loop (similar to what we do for keymaps - check if they're changed, apply necessary changes in that case) - but this will fail with Python scripts that perform multiple changes before returning to the event loop.
I'll look into implementing this, but am skeptical that this can be done in a nice way.