Is it too much of a problem to have the possibility of accessing a Tool to more than one Mode at a time?
Currently if we want to add the same WorkSpaceTool for Edit and Object Modes we have to duplicate the entire class, which needs a different bl_idname to register correctly.
Things get worse when more Edit modes have to be considered, like lattices, armatures or curves. This also populates context.workspace.tools too much with the same tool.
I think that a poll method to check the current mode for Tools would come in very handy.
Mix in classes (inheritance) should be the way to go here. Put the logic that both operators have in common into a base class, which is not registered, and have the child classes inherit from it. The child classes only contain what is different, like the bl_idname etc.
I know, but it doesn’t seem practical to have all those idnames in the same place.
Sometimes I need to free data when the tool is deselected in object mode, but the user could have leaved some tool active in a less frequent mode, like EDIT_CURVE or EDIT_LATTICE, and then these tools will still be present in
Another problem is that because the tools are essentially different, the user is forced to reselect them the fist time when switching modes.