private PointerPointProperties GetProperties() { var props = new PointerPointProperties() { IsPrimary = true, IsInRange = Pointer.IsInRange, }; props.IsLeftButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Left); props.IsMiddleButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Middle); if (_buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Right)) { switch (Pointer.PointerDeviceType) { case PointerDeviceType.Mouse: props.IsMiddleButtonPressed = true; break; case PointerDeviceType.Pen: props.IsBarrelButtonPressed = true; break; } } props.IsXButton1Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X1); props.IsXButton2Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X2); props.IsEraser = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Eraser); props.PointerUpdateKind = ToUpdateKind(_buttonUpdate, props); return(props); }
private PointerPointProperties GetProperties() { var props = new PointerPointProperties() { IsPrimary = true, IsInRange = Pointer.IsInRange, }; props.IsLeftButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Left); props.IsMiddleButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Middle); props.IsRightButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Right); props.IsXButton1Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X1); props.IsXButton2Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X2); props.IsEraser = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Eraser); switch (Pointer.PointerDeviceType) { // For touch and mouse, we keep the default pressure of .5, as WinUI case PointerDeviceType.Pen: // !!! WARNING !!! Here we have a slight different behavior compared to WinUI: // On WinUI we will get IsRightButtonPressed (with IsBarrelButtonPressed) only if the user is pressing // the barrel button when pen goes "in contact" (i.e. touches the screen), otherwise we will get // IsLeftButtonPressed and IsBarrelButtonPressed. // Here we set IsRightButtonPressed as soon as the barrel button was pressed, no matter // if the pen was already in contact or not. // This is acceptable since the UIElement pressed state is **per pointer** (not buttons of pointer) // and GestureRecognizer always checks that pressed buttons didn't changed for a single gesture. props.IsBarrelButtonPressed = props.IsRightButtonPressed; props.Pressure = (float)_pressure; break; } props.PointerUpdateKind = ToUpdateKind(_buttonUpdate, props); return(props); }