public void OnAttractedEdge(IAttractable attractable, ManipulateEdges manipulateEdges, AttractedEdge edge, double time)
        {
            double offset;

            if (edge == AttractedEdge.Right)
            {
                var duration  = end - start;
                var startTime = time - duration;
                startTime = EditMode.AdjustStartTime(m_State, m_RightMostMovingItems, startTime);

                offset = startTime + duration - end;
            }
            else
            {
                if (edge == AttractedEdge.Left)
                {
                    time = EditMode.AdjustStartTime(m_State, m_LeftMostMovingItems, time);
                }

                offset = time - start;
            }

            if (start + offset < 0.0)
            {
                offset = -start;
            }

            if (!offset.Equals(0.0))
            {
                foreach (var grabbedClips in movingItems)
                {
                    grabbedClips.start += offset;
                }

                EditMode.UpdateMove();

                RefreshPreviewItems();
            }
        }