Q1: Is the Layout the value of a Group.layout? If so, does that Group have a Placeholder, as the value of Group.placeholder?
In that case the size of the Group will depend on the area covered by its members. But the layout is responsible for moving those member nodes, so the layout should know the area that its nodes are being laid out in. Thus it should not be necessary to ask the Group how big it is before the layout has moved the nodes, and in fact it is misleading to depend on any information about the group’s size while the layout is happening.
Q2: If you are using ForceDirectedLayout, I think one problem is that the layout thinks that links connecting to member nodes of a group think it is just connecting with the group as a whole, not to a particular member node. So it does not realize that a link connects to one particular side of the group – it thinks they are all the same.
I"m wondering if you can get better results for this situation by setting Group.layout to null, so that the ForceDirectedLayout will operate on all of the nodes and links while completely ignoring Groups. But presumably you want each Group to layout its nodes inside itself, which is why you have that SquareLayout, so you cannot set Group.layout to null.
You could customize the ForceDirectedLayout to ignore all of the groups but treat each node within groups as fixed, so that they are not moved. Sorry, but I don’t have time now to work on this for you.
Q3: All that information should be in the Node.data object’s properties.