When you do this, Windows pauses your client. I’ve seen in several games with client-sided scripts, if you do this, those scripts get paused (eg. a timer in my parkour game doesn’t loop and do the wait(1) because you are holding the application’s topbar with right click)
This makes your character “fly” because your client isn’t calculating physics on your character when it is paused. Your client has network ownership of your character, and the server does not do calculations via gravity and movement because this would make your experience very laggy. This application pause bug seems to be an inherent bug in Windows that I have seen across other software if I am remembering correctly. As I am aware, this bug is impossible on Mac.
I don’t think this is fixable on Roblox’s end. Some good solutions could be done on your end, such as to just implement good flying checks and don’t ban the player for hovering, just kick them or respawn their character. If Roblox can fix this, that would be very cool, but in that case, it may incentivize some users to use exploits to fly.
I have also noticed this occurs when holding down the close X with leftclick.