public PointerPointProperties(RawInputModifiers modifiers, PointerUpdateKind kind) { PointerUpdateKind = kind; IsLeftButtonPressed = modifiers.HasAllFlags(RawInputModifiers.LeftMouseButton); IsMiddleButtonPressed = modifiers.HasAllFlags(RawInputModifiers.MiddleMouseButton); IsRightButtonPressed = modifiers.HasAllFlags(RawInputModifiers.RightMouseButton); IsXButton1Pressed = modifiers.HasAllFlags(RawInputModifiers.XButton1MouseButton); IsXButton2Pressed = modifiers.HasAllFlags(RawInputModifiers.XButton2MouseButton); // The underlying input source might be reporting the previous state, // so make sure that we reflect the current state if (kind == PointerUpdateKind.LeftButtonPressed) { IsLeftButtonPressed = true; } if (kind == PointerUpdateKind.LeftButtonReleased) { IsLeftButtonPressed = false; } if (kind == PointerUpdateKind.MiddleButtonPressed) { IsMiddleButtonPressed = true; } if (kind == PointerUpdateKind.MiddleButtonReleased) { IsMiddleButtonPressed = false; } if (kind == PointerUpdateKind.RightButtonPressed) { IsRightButtonPressed = true; } if (kind == PointerUpdateKind.RightButtonReleased) { IsRightButtonPressed = false; } if (kind == PointerUpdateKind.XButton1Pressed) { IsXButton1Pressed = true; } if (kind == PointerUpdateKind.XButton1Released) { IsXButton1Pressed = false; } if (kind == PointerUpdateKind.XButton2Pressed) { IsXButton2Pressed = true; } if (kind == PointerUpdateKind.XButton2Released) { IsXButton2Pressed = false; } }
private DragDropEffects GetPreferredEffect(DragDropEffects effect, RawInputModifiers modifiers) { if (effect == DragDropEffects.Copy || effect == DragDropEffects.Move || effect == DragDropEffects.Link || effect == DragDropEffects.None) { return(effect); // No need to check for the modifiers. } if (effect.HasAllFlags(DragDropEffects.Link) && modifiers.HasAllFlags(RawInputModifiers.Alt)) { return(DragDropEffects.Link); } if (effect.HasAllFlags(DragDropEffects.Copy) && modifiers.HasAllFlags(RawInputModifiers.Control)) { return(DragDropEffects.Copy); } return(DragDropEffects.Move); }