Is there a way to call your own undo and or redo method when your operator is being 'undone'? I already used this bpy built-in method:
bl_info = {'UNDO'}
but this didn't do the full undo.
Blender's undo system works by saving the blend file to memory, and loading it to perform the undo. If your operator doesn't fully undo, you're probably calling other operators from within its code. That's usually a bad idea; modify object properties and call functions instead.
There are no undo/redo functions that you can override.
There is a way.
BoolProperty to the scene, here we call it checker.checker via context and run checker = not checker.checker_cache and skip_checker_update.checker, if skip_checker_update is False, sync the checker and the checker_cache.my_undo_post(scene, _) and a
pre undo function my_undo_pre(_, _).skip_checker_update as True so the blender's undo/redo logic will change back the checker because it is registed, but the checker_cache will keep unchanged.checker not equals checker_cache, if is, sync them and run your undo logic. Then turn skip_checker_update back to Falsebpy.app.handlers.undo_post.append(my_undo_post).It's a little complex but basically works.