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 !); }
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); }