示例#1
0
文件: DragProxy.cs 项目: Egaros/lib
        public IDisposable CaptureMouse(Action <MouseEventArgs> onMouseMove, Action <MouseButtonEventArgs> onMouseLeftButtonUp, Action onLostMouseCapture, Cursor cursor = null)
        {
            _currentCapture = _currentCapture?.DisposeExchange();

            var canvas = _canvasPool.GetObject();

            canvas.Cursor = cursor;

            var isCaptured = canvas.CaptureMouse();

            if (isCaptured == false)
            {
                return(null);
            }

            var dragProxyImpl = new DragProxyImpl(canvas, onMouseMove, onMouseLeftButtonUp, d =>
            {
                _canvasPool.Release(d.Canvas);

                if (ReferenceEquals(_currentCapture, d))
                {
                    onLostMouseCapture();
                }
            }, OnDisposed);

            return(_currentCapture = dragProxyImpl);
        }
示例#2
0
文件: DragProxy.cs 项目: Egaros/lib
        private void OnDisposed(DragProxyImpl proxy)
        {
            if (ReferenceEquals(proxy, _currentCapture) == false)
            {
                return;
            }

            _currentCapture = null;

            proxy.Canvas.ReleaseMouseCapture();
        }