const Vector2n Widget::GlobalToLocal(const Vector2n GlobalPosition) const { /*Vector2d CanvasPositionDouble = GetParent()->GlobalToCanvas(GlobalPosition); Vector2n CanvasPosition(std::lround(CanvasPositionDouble.X()), std::lround(CanvasPositionDouble.Y())); // TODO: Loss of accuracy? Fix it if needed. return CanvasPosition - m_Position;*/ return ParentToLocal(GlobalToParent(GlobalPosition)); }
template <typename T> void ListWidget<T>::ProcessManipulationUpdated(const PointerState & PointerState) { if (!HasTypingFocus()) { auto ParentLocalPosition = GlobalToParent(Vector2n(PointerState.GetAxisState(0).GetPosition(), PointerState.GetAxisState(1).GetPosition())); ModifyPosition() = GetGestureRecognizer().m_ManipulationOffset + ParentLocalPosition; } }
void TextFieldWidget::ProcessManipulationStarted(const PointerState & PointerState) { if (!HasTypingFocus()) { auto ParentLocalPosition = GlobalToParent(Vector2n(PointerState.GetAxisState(0).GetPosition(), PointerState.GetAxisState(1).GetPosition())); ModifyGestureRecognizer().m_ManipulationOffset = GetPosition() - ParentLocalPosition; } }
void MultitouchTestBoxWidget::ProcessManipulationUpdate(const InputEvent & InputEvent) { const PointerState & PointerState = InputEvent.m_PostEventState; //printf("MultitouchTestBoxWidget::ProcessManipulationUpdate()\n"); /*Vector2d PositionDouble = GetParent()->GlobalToCanvas(Vector2n(PointerState.GetAxisState(0).GetPosition(), PointerState.GetAxisState(1).GetPosition())); Vector2n PositionInt(std::lround(PositionDouble.X()), std::lround(PositionDouble.Y())); // TODO: Loss of accuracy? Fix it if needed.*/ auto ParentLocalPosition = GlobalToParent(Vector2n(PointerState.GetAxisState(0).GetPosition(), PointerState.GetAxisState(1).GetPosition())); ModifyPosition() = GetGestureRecognizer().m_ManipulationOffset + ParentLocalPosition; }