Good catch, thanks.
Canvas coordinates should use logical coordinates as Double values. They are not physical pixels, and using Double works better on HiDPI/scaled displays where pointer positions may not always be whole numbers.
MouseDown() and MouseUp() were inconsistent because they inherited an older Control signature using Integer x/y values. I’ve fixed this for the next release so their x/y parameters are also Double: https://feedback.objo.dev/bug/264
I’ve also changed the button parameter from a raw Integer to a new MouseButton enum, so code is clearer and avoids magic values like 0, 1, and 2: https://feedback.objo.dev/feature/265
The signatures will be:
MouseDown(x As Double, y As Double, button As MouseButton)
MouseUp(x As Double, y As Double, button As MouseButton)
MouseMove(x As Double, y As Double)
MouseDrag(x As Double, y As Double)
Example:
Sub MouseDown(x As Double, y As Double, button As MouseButton)
If button = MouseButton.Right Then
# Right-click
End If
End Sub