Btw, any ideas what’s the difference between OperatorProperties and just Operator types? After all this time I still don’t quiet get how it works exactly.
OperatorProperties seems to be just a container for the properties - when you call some operator, Blender will instantiate Operator and apply some OperatorProperties to it, either from the UI or from the arguments provided from python directly or from last used OperatorProperties for this operator stored in window manager. Besides props callbacks, OperatorProperties also appear as a return value from self.layout.operator("xxxx").