示例#1
0
        private void StartDrag(IPropHolder widget, bool isXFixed, bool isYFixed, DragCtx dragCtx)
        {
            if (isXFixed && isYFixed)
            {
                return;
            }

            var devLoc = _device.GetPointedLocation();

            if (dragCtx.IsDragging)
            {
                return;
            }
            dragCtx.IsDragging = true;
            dragCtx.Set(devLoc);
            widget.WithProp(_onUpdateDrag !);
        }
示例#2
0
        private void Dragging(IWidget widget, bool isXFixed, bool isYFixed, DragCtx dragCtx)
        {
            var devLoc = _device.GetPointedLocation();
            var devX   = devLoc.X;
            var devY   = devLoc.Y;

            var(x, y, w, h) = widget.Space;
            if (Math.Abs(dragCtx.DevX - devX) < 0.01f && Math.Abs(dragCtx.DevY - devY) < 0.01f)
            {
                return;
            }

            var nx = x + (isXFixed ? 0 : devX - dragCtx.DevX);
            var ny = y + (isYFixed ? 0 : devY - dragCtx.DevY);

            (nx, ny) = CheckBounds(widget, nx, ny, isXFixed, isYFixed);

            WidgetsSpaceHelper.UpdateSpace(widget, new RectangleF(nx, ny, w, h));
            dragCtx.Set(devLoc);
        }