Private Window: stack view for non-owning players?

Just started Vassaling a few weeks ago, but already created my first full Vassal module (SaintPetersburg+expansions) and came up with one minor problem in playtest…

I used private map windows (viewable to all players) for a combination of playerboad and player hand (cards “in hand” are just face-down). This works well and does exactly what I want/expect save for one thing… the stack viewer only activates for the owning player. I have tried all possible options but cannot find a way for non-owning players to invoke the stack viewer on opponents boards, despite the fact they can otherwise view everything there.

I was relying on the stack-viewer to bring up enlarged views of cards played for all players, not just ones own cards.
It’s a bummer because otherwise the module is complete and plays very well.

I can use non-private boards to resolve, but then the pieces become modifiable by opponents which is what I wanted to avoid. I could alternatively much with zoom, but this is a bit of a hack…particularly when the stack viewer works so well for the active player.

Any other suggestions?
I don’t see why the stack viewer should not work if the player has visibility?

This has been noted before. Unfortunately no work around at this time

see

vassalengine.org/tracker/sho … gi?id=9813

I found a workaround in my case – putting it here in case it helps others.

First, use public window (or at least add all player sides to have visibility of the private window). This is required for the mouse-over viewer to activate.

Now use the component trait “restrict commands” (not to be confused with “restrict access” which I tried prior and also kills the mouse-over.

If you are being clever and naming maps the same as side-definitions (which I recommend), then you can restrict commands based on the piece map and thus prevent right-click commands from being visible to other players when the piece is not on their own board…

More specifically, set “Restrict when properties match” to “CurrentMap != $PlayerSide$” and then add the commands to restrict in the list below. (aside: for some reason I was unable to combine two checks with an || when also using indirection for $PlayerSide$. Each worked separately, but combining both with || broke things. If I did two checks without indirection the || worked fine. I worked around this new problem with two separate RestrictCommand traits.)

In summary: you can’t stop them from moving the pieces within or even to/from boards as private boards do, but at least you can suppress the availability of commands while simultaneously having mouse-over working

I hope this helps someone else!!