ID:2921714
 
Resolved
MouseExited() events on a map didn't fire when another control interposed itself on top.
BYOND Version:515
Operating System:Windows 10 Pro 64-bit
Web Browser:Chrome 123.0.0.0
Applies to:Dream Seeker
Status: Resolved (515.1637)

This issue has been resolved.
In some situations, the mouse can stop hovering an object without the mouse actually moving. In these cases, the engine doesn't know the mouse is no longer hovered over an object, so client/MouseExited() is never called --at least, until the next time the mouse enters a new object.

This is especially apparent when you create a non-mouse-interacting element in the UI under the mouse, and the user moves their mouse outside of the window. If the user happens to move their mouse back into the window over the same object they were previously hovering over, MouseEntered() isn't called and the engine just happily assumes we've had our mouse in the object the whole time.

I've been messing around with a browser control that uses MouseEntered() to show the control, and browser MouseLeave events to hide it when the mouse leaves the control. This has exposed this deficiency in action. In certain situations made common by this control being at the corner of the screen, the browser won't show back up if the mouse exits the window, but comes back in over the object that triggers to show it. This is a common gesture that users are going to encounter due to the nature of this HUD element, so this niche oversight becomes a glaring deficiency.

Test project sent in the alpha channel.

I promised you fries:

Lummox JR resolved issue with message:
MouseExited() events on a map didn't fire when another control interposed itself on top.