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.

10 Likes