Resetting selection


We are repositioning nodes using MoveSelection within a goprintview to stop them being split between pages, which all works well. The problem we have though is if we subsequently change the viewscale, so that the nodes are smaller and there is no longer any need to reposition them, they are still displayed in their repositioned locations. What is the best way to reset the view to its previous state before moveselection was used? We've tried reversing the moveselection but, because the viewscale has changed, the nodes are not located where they would have been if no repositioning had been carried out beforehand. We've had a look at using undo on the view but with no success.
Any suggestions would be much appreciated.

Changing the scale doesn’t change locations, so I’m not following you on that part of this.

If a node is at Location x,y, and you move it to a,b, then change scale and move it back to x,y… it’s going to be in the same place (relative to the other nodes) as it was at the start.

It didn't make a great deal of sense to me either!!
On closer inspection though the problem turns out to have been caused by saving the GoSelection for use between page postbacks. Although this is saved to session fine and when loaded back up contains a list of nodes, these object references do not seem to pointing to the nodes within the current document. Therefore when we were using this to reposition the nodes it was obviously not having any effect on the actual document hence the confusion.
It is obviously a design issue at our end, but perhaps the GoSelection class should not be serializable to stop this sort of thing happening?

In GoWeb, the GoSelection has to be serialized so that it can remember what the user has selected. The same is true for the GoView.