public void Drag()
        {
            Int32 x = Cursor.Position.X;
            Int32 y = Cursor.Position.Y;

            CloseWindows();

            MakeGrammarNotExclusive();
            DeactivateRule("post_plot");

            // Due to a problem with Dragon 15, rules we want to remain active
            // need to be explicitly re-activated when another is de-activated.
            ReactivateRule("mouse_plot");

            // If no start point has been selected, then don't do anything.
            if (_dragSet == false)
            {
                return;
            }

            // Show the arrow, wherever it was last time.
            _markArrowWindow.Show();

            var handle = Win32.WindowFromPoint(x, y);

            Win32.BringWindowToTop(handle);
            Win32.SetForegroundWindow(handle);

            Console.WriteLine($"Dragging from ({_dragAnchor.X}, {_dragAnchor.Y}) to ({x}, {y})");

            Mouse.Animate(x, y, _dragAnchor.X, _dragAnchor.Y, 50);
            Mouse.Down(MouseButtons.Left);

            Mouse.Animate(_dragAnchor.X, _dragAnchor.Y, x, y);
            Mouse.Up(MouseButtons.Left);

            CloseWindows();

            _isZoomed = false;
        }