Yes, `setContextActive` is called by other classes, but that is its whole point of existing - other classes tell it when they are in context or not. The other classes should not be touching each other's contexts, just informing the presenter when their own context is active or not (unfortunately we are not enforcing that, so they could change each other's context, but they shouldn't). In hindsight it might have been better to have classes use themself as a 'context' rather than values from the enum.

I don't think having modal shortcut contexts would add much complication - the simplest case would be just to do the same thing as here - make a backup of active contexts, clear it, and put the modal context only. That would just need a change in `setContextActive` so that it if a modal context is active, it will modify the backup instead of the list that just has the active context.