// Disenagaging
        public override void OnDisengage()
        {
            base.OnDisengage();
            DisableAutoPanning();

            // When not cancelled
            if (!cancelled)
            {
                Cursor.Current = Cursors.AppStarting;

                // Move geometry back to original position
                MoveGeometryRelative(new Vector2D(0f, 0f), false, false);

                // Resume normal undo/redo recording
                General.Map.UndoRedo.IgnorePropChanges = false;

                // Make undo for the dragging
                General.Map.UndoRedo.CreateUndo("Drag geometry");

                // Move selected geometry to final position
                MoveGeometryRelative(mousemappos - dragstartmappos, snaptogrid, snaptonearest);

                // Stitch geometry
                if (snaptonearest)
                {
                    General.Map.Map.StitchGeometry();
                }

                // Make corrections for backward linedefs
                MapSet.FlipBackwardLinedefs(General.Map.Map.Linedefs);

                // Snap to map format accuracy
                //General.Map.Map.SnapAllToAccuracy();

                // Update cached values
                General.Map.Map.Update();

                // Done
                Cursor.Current        = Cursors.Default;
                General.Map.IsChanged = true;
            }
        }