Python Modal Operator Selection Delay
I was poking around and I think I found a solution:
# Import
import bpy
from bpy.props import StringProperty

# Properties
class Blank(bpy.types.Operator):
    bl_label = &quot;Blank&quot;
    bl_idname = &quot;blank.example&quot;

    current: StringProperty()
    last: StringProperty()

    # TESTING ##################################################################
    def modal(self, context, event):
        current = bpy.context.active_object.name
        if event.type == 'MOUSEMOVE' and current != self.last:
            name = bpy.context.active_object.name
            print(name)
        if event.type == 'ESC':
            print(&quot;CANCELLED&quot;)
            return{'CANCELLED'}
        self.last = bpy.context.active_object.name
        return{'PASS_THROUGH'}
    def invoke(self, context, event):
        context.window_manager.modal_handler_add(self)
        self.last = bpy.context.active_object.name
        return{'RUNNING_MODAL'}
    ############################################################################


# Menu on the Sidebar
class Blank_PT_Panel(bpy.types.Panel):
    bl_label = &quot;Panel&quot;
    bl_idname = &quot;OBJECT_PT_Blank&quot;
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = &quot;Blank&quot;
    bl_context = &quot;objectmode&quot;

    def draw(self, context):
        layout = self.layout
        # Button
        row = layout.row(align=True)
        row.operator(&quot;blank.example&quot;, text=&quot;Button&quot;, icon=&quot;QUESTION&quot;)

# Registration
classes = (
    Blank_PT_Panel,
    Blank,
    )
def register():
    from bpy.utils import register_class
    for cls in classes:
        register_class(cls)
def unregister():
    from bpy.utils import unregister_class
    for cls in reversed(classes):
        unregister_class(cls)
if __name__ == &quot;__main__&quot;:
    register()