inRightDragByParentNode method
Implementation
IMindMapNode? inRightDragByParentNode(
IMindMapNode node,
Offset offset,
IMindMapNode parentNode,
) {
Rect? rect = parentNode.getRightArea();
if (rect != null) {
if (rect.top * widget.getZoom() <= offset.dy &&
rect.left * widget.getZoom() <= offset.dx &&
rect.bottom * widget.getZoom() >= offset.dy &&
rect.right * widget.getZoom() >= offset.dx) {
_dragIndex = 0;
if (parentNode.getRightItems().isNotEmpty) {
_dragIndex = parentNode.getRightItems().length;
int index = 0;
for (IMindMapNode n in parentNode.getRightItems()) {
Size? size = n.getSize();
Offset o = n.getOffset() ?? Offset.zero;
if (n.getRenderObject() is RenderBox) {
Offset po = (n.getRenderObject() as RenderBox).localToGlobal(
Offset.zero,
ancestor: widget._renderObject,
);
o = Offset(o.dx + po.dx, o.dy + po.dy);
}
if (o.dy * widget.getZoom() +
(size?.height ?? 0) * widget.getZoom() / 2 >
offset.dy) {
_dragIndex = index;
break;
}
index++;
}
}
if (node.getParentNode() == parentNode &&
node.getNodeType() == NodeType.right) {
int i = parentNode.getRightItems().indexOf(node);
if (i < _dragIndex && _dragIndex > 0) {
_dragIndex--;
}
}
return parentNode;
}
for (IMindMapNode cn in parentNode.getRightItems()) {
IMindMapNode? n = inRightDragByParentNode(node, offset, cn);
if (n != null) {
return n;
}
}
}
return null;
}