So the way to look at the grab system is it's a stack of items that have grabbed an object
primary grabs first, then secondary grabs so the stack is primary on the bottom and secondary on the top
when you pop off the stack (ungrab) the items above the popped item also get popped off the stack, so if secondary ungrabs then only secondary is removed, however if primary is ungrabbed, then primary is on the bottom of the stack so the secondary element will get (force) popped off first, run its clean up logic, then the primary is popped off and runs its cleanup logic.
What you can do here now is hook into the
SecondaryForceUngrab emitter and basically do something like say
on secondary being forced off the stack call
AbortPop to stop the primary being popped
then manually pop off the primary
then you still now have the secondary object in that force pop which you can push back onto the stack, so it becomes the primary item in the stack (and therefore the grabbing object)
I'll look to do a tutorial in this at some point as it's a bit involved to describe the process in a forum post.