Plugin event for when the selected ribbon tool changes

As a Roblox developer, it is currently too hard to do plugin operations when the selected ribbon tool changes. There is no event for when this happens, so I need to keep track of the current tool and poll for when the tool changes, making needless use of a loop or RunService connection.

In my plugin Studio Tweaks - Disable selection box, disable UI Editor, anchor new parts, show selection faces, and more, I need to listen for when the ribbon tool changes so I can disable or enable the extra features my plugin adds on top of the studio dragger gizmos. Since there is no event for this, I am doing the poll in a RenderStepped callback. The original purpose of this callback was explicitly for this purpose so the plugin would feel responsive.

I would like an event plugin.SelectedRibbonToolChanged to go along with the function plugin:GetSelectedRibbonTool() I’m currently using.

This is my current solution involving polling. I would like this to simply be attached to an event so I don’t have to poll.

local function onStep(deltaTime)
	if plugin:GetSelectedRibbonTool() ~= lastUsedTool then
		initializeGizmos()
	end
end

If Roblox is able to address this issue, my plugin could be responsive without wasting time polling constantly, waiting for the current tool to change.

8 Likes