While listening onto MouseLeave for any GuiObject, the event is not fired for any current GuiObjects your mouse is considered entered with Mouse input type after toggling a screengui enable state to false. Meanwhile, doing the same operation with your input device being mobile, the MouseLeave event is fired.
Input Device: Mouse, with the device being used Computer
Repro steps:
-
Create, or have a screen gui with a visible GuiObject inside of it

-
Listen onto the GuiObject’s MouseLeave signal
local parent = script.Parent
local screenGui = parent.Parent
parent.MouseEnter:Connect(function()
print("Mouse has entered the ui")
end)
parent.MouseLeave:Connect(function()
print("Mouse has left the ui")
end)
parent.Activated:Connect(function()
screenGui.Enabled = false
end)
- Press f5 (play) in Studio, or RobloxPlayer and check the displayed inputs in output console as MouseLeave is not fired as one might expect
Small 7 second clip of this happening on Computer, and then simulated Mobile device:
Did not include RobloxPlayer results as it is redundant, and the same result
[Computer] https://gyazo.com/fecba2f5d4cb53d6d35cb7255d5bcb59.mp4
[Simulated Touch Device] https://gyazo.com/889776c4a1ccf8ff1383be4303d6c03f.mp4
Expected behavior
Similar to how it behaves when you turn the visibility state off or when the input type is touch/mobile, when you toggle the GuiObjects visible state to false then move your mouse, the MouseLeave event is fired.
The event firing, if the mouse was previously inside of the GuiObject before the ScreenGui’s enabled state being set false.
