Swimlane drag drop not working

swimlane drag drop not working properly…

prmr file…

https://ufile.io/3szeu

Are you using go-debug.js and checking for any warnings or errors in the console window?

Error Line 2952

    internalHelper._getLanesInRect = function (diagram, rect) {
        var pointObjects = diagram.findObjectsIn(rect, function (x) {
            if (x && x instanceof go.Group && (x.category == "Lane")) {
                return x;
            }
            return null;
        }, null, true);

        return pointObjects;
    }

Error line 3002

    internalHelper._setPartMultiLane = function (part) {
        if (part && part.diagram && part.resizeObject) {
            var diagram = part.diagram;
            var pos = part.resizeObject.getDocumentPoint(go.Spot.TopLeft);
            var rect = new go.Rect(pos.x, pos.y, part.resizeObject.width, part.resizeObject.height);
            var lanes = internalHelper._getLanesInRect(diagram, rect);
            if (lanes) {
                var laneKeys = [];
                var pools = new go.List(go.Group);
                lanes.each(function (lane) {
                    if (lane.containingGroup && !pools.contains(lane.containingGroup)) {
                        pools.add(lane.containingGroup);
                    }
                    laneKeys.push(lane.data.key);
                });
                if (pools.count > 0) {
                    part.isLayoutPositioned = false;
                }
                if (laneKeys.length > 0) {
                    pools.each(function (pool) {
                        var memberParts = new go.List(go.Node);
                        memberParts.add(part);

                        var ok = pool.addMembers(memberParts, true);
                        if (ok) {
                            diagram.model.setDataProperty(part.data, "multiLanes", $.extend(true, [], laneKeys));
                        }
                        else {
                            diagram.currentTool.doCancel();
                        }
                    });
                }
            }
        }
    }

When is _setPartMultiLane being called?

I comment

/*diagram.skipsUndoManager = true;
multiLanesParts.each(function (part) {
internalHelper._setPartMultiLane(part);
});
diagram.skipsUndoManager = false;
*/

and

// internalHelper._relayoutPools(diagram);

work

        diagram.addModelChangedListener(function (e) {
            if (e.isTransactionFinished && e.model && e.object && e.object.changes) {
                var changedPools = new go.List(go.Group);
                var multiLanesParts = new go.List(go.Node);
                e.object.changes.each(function (transItem) {

                    if (transItem.diagram && transItem.object && transItem.object.data) {
                        if (transItem.object.data.multiLanes) {
                            if (!multiLanesParts.contains(transItem.object)) {
                                multiLanesParts.add(transItem.object);
                            }
                        }
                        if (transItem.object.category == "Lane" && transItem.object.containingGroup && transItem.object.containingGroup.category == "Pool") {
                            if (!changedPools.contains(transItem.object.containingGroup)) {
                                changedPools.add(transItem.object.containingGroup);
                            }
                        }
                    }
                });
                changedPools.each(function (pool) {
                    pool.memberParts.each(function (part) {
                        if (part instanceof go.Group) return;
                        if (part.data && part.data.multiLanes && !multiLanesParts.contains(part)) {
                            multiLanesParts.add(part);
                        }
                    });
                });

                if (multiLanesParts.count > 0) {
                    window.setTimeout(function () { // max call stack hatasına düşmemek için
                        /*diagram.skipsUndoManager = true;
                        multiLanesParts.each(function (part) {
                            internalHelper._setPartMultiLane(part);
                        });
                        diagram.skipsUndoManager = false;
                        */
                        internalHelper._relayoutPools(diagram);
                    }, 1);
                }
            }

            if (e.isTransactionFinished && onRibbonRefresh) {
                onRibbonRefresh();
            }
            if (e.propertyName == "FinishedUndo" || e.propertyName == "FinishedRedo") {
               // internalHelper._relayoutPools(diagram);
               
                diagram.skipsUndoManager = true;
                diagram.clearHighlighteds();
                diagram.skipsUndoManager = false;
            }
            
            if (e.isTransactionFinished && e.model && e.object && onModelChanged) {
                onModelChanged();
            }

        });

This is all too complicated for me to understand. What is _setPartMultiLane supposed to do, and why are you calling it with skipsUndoManager temporarily set to true after a transaction has ended?