Dragging node between nested sub-graphs

Here are the steps to duplicate this problem using the SubGraph App:

  1. Start the SubGraph App.
  2. Select all nodes.
  3. Click [Make Custom SubGraph]
  4. Click [Layout Document]
  5. Select Nodes 3 and 0.
  6. Click [Make Custom SubGraph]
  7. Click [Layout Document]
  8. Shift-Drag Node 1 into SubGraph 6 (which contains Nodes 0 and 3)
SubGraph 6 doesn't get highlighted and if you drop the Node onto the un-highlighted sub-graph, it ends up being added to the GoView.
The same problem occurs when you try to drag a Node out of a nested SubGraph onto the Parent SubGraph. I'm sure the fix is in SubGraphDraggingTool.FindSubGraph1(), but mouse moves are notoriously hard to debug. Got any suggestions?
Jeff Schwandt

Been playing with this…I thought I was seeing some bad behavior at first too. But, if I’m careful to hold the Shift key down until the mouse button is released, I don’t think I see any unexpected behavior.

Is it possible that's what you're seeing?

The inner SubGraph wasn’t being highlighted like one would expect. Clicking [Layout Document] again shows that the node actually was added to the GoView Document instead of the SubGraph.
I took a risk and modified FindSubGraph1(GoObject, PointF, GoObject) in SubGraphDraggingTool and took out the test for skip.IsChildOf(obj), and then I get the behavior I expected and wanted with no bad side-affects. IsChildOf(GoObject) returns true even if the GoObject is an indirect child of the parent object.

private GoSubGraph FindSubGraph1(GoObject obj, PointF pt, GoObject skip)
if (!obj.CanView())
return null;
if (obj == skip ) // || skip.IsChildOf(obj))
return null;
GoSubGraph sg = obj as GoSubGraph;
if (sg != null)
RectangleF b = obj.Bounds;
if (b.Contains(pt))
foreach (GoObject o in sg)
GoSubGraph sub = FindSubGraph1(o, pt, skip);
if (sub != null)
return sub;
return sg;
return null;