Sorry, guys, but I think you're missing my point on what I'm trying to accomplish.
There's no single parent canvas. There can be multiple parents. And my GOP abstraction should work regardless of how many parents it has and which of the parent windows is visible.
Let's consider an example. We have a patch called patch.pd (not created by me, but by the user of my abstraction). Inside patch.pd there's a GOP subpatch: [pd $0-level1] (position and size of GOP area are arbitrary). Inside it there's my GOP abstraction [myhovertest].
Now, if I use [iemguts/canvasposition 2] in myhovertest.pd, it's going to return the position of $0-level1 relative to the top right corner of the main patch. So if we subtract this position from mouse position that we got from receivecanvas, we can get the position of the mouse relative to $0-level1's GOP area. The issue is, there seems to be no way of determining the position of GOP area programmatically, so we have no way of knowing where the mouse is relative to our abstraction [myhovertest]. [iemguts/canvasposition 1] returns position of [myhovertest] relative to $0-level1's window, but what we really need to know is the position of [myhovertest] relative to $0-level1's GOP area.
I hope I explained this well...