Hmmm...
Just had a thought, could maybe work...
Here's the geeky details...
There seems to be no easy way around it, we need something like a Zone stack, but as everyone knows building one that works ain't so easy
We still have an Active Zones List.
Each Widget will also have its own activation stack -- an item consisting of the Action and the Zone that activated it.
Let's use a C4 example:
So first A1-D8 are blank -- probably a good idea to set up a Home Zone for the C4 to do this using NoAction.
So let's get into the internals and look at an individual widget activation stack after initialization:
Map an FX and it becomes:
Code:
NoAction Home
anFXParam FXZoneName
Now map Sends:
Code:
NoAction Home
anFXParam FXZoneName
aSendParam SendZoneName
When we say Deactivate
SendZoneName -- we remove
SendZoneName from the Active Zones List.
As part of Deactivate Zone internals, we also say to each individual Widget GoPrevious.
This simply backs up the list a la:
Code:
NoAction Home
anFXParam FXZoneName
Now here is the key difference.
Instead of blindly going back to anFXParam, we check to to if FXZoneName is still Active, and if not, we back up again, and also remove the dead FXZoneName entry.
However if we Deactivated FXZoneName from this:
Code:
NoAction Home
anFXParam FXZoneName
aSendParam SendZoneName
We would do nothing to the Widget -- it is at this moment mapped to aSendParam SendZoneName.
If we then Deactivate SendZoneName, we will go back, find FXZoneName has disappeared, and back upon one more to Home.
Just thinking out loud...