HandleAdornment objects are missing Active property

Most GUI elements have an Active property which, when set to true, causes this GUI element to “consume” the event & prevent it from trickling down to lower layers. This also causes UserInputService’s Input* events to set the “game processed event” flag to true. This feature makes it pretty easy to create new GUI elements & not have to do creative things to block mouse operations from firing in other places.

This property is missing on the HandleAdornment objects! So, if you make a UI element with these, you have to come up with creative workarounds to prevent clicks from propagating down.

Here’s one such workaround:

I wanted to make a “Handles”-like object with CylinderHandleAdornments & ConeHandleAdornments; however, because they can’t sink events, it was causing issues with mouse clicks being perceived elsewhere. So, I placed rotated text buttons on top of them in their screen space. It was heinous. This is very tricky, but it’s pretty bulletproof.

Another workaround could be to manage the gameProcessedEvent flag independently – whenever a mouse click occurs on your HandleAdornment, notify anything else that’s listening for mouse clicks & tell them to ignore mouse clicks for the next 30ms or so. This is a bit easier, but it’s more error-prone (everywhere you listen to mouse clicks, you need to get notifications that the game consumed the event).


Here’s the official “user story” form you asked for:

As a Roblox developer, it is currently too hard to make user input with *HandleAdornment objects that don’t interfere with other user input.

If Roblox is able to address this issue, it would improve my development experience because I wouldn’t have to do hacky workarounds to prevent interference.

6 Likes