So far this has been the way I check if World asset has been dropped in the viewport:
import bpy
from bpy.app.handlers import persistent
@persistent
def depsgraph_handler(scene, depsgraph):
for update in depsgraph.updates:
if update.id.bl_rna.name == 'World':
print('redraw world here')
def register():
bpy.app.handlers.depsgraph_update_post.append(depsgraph_handler)
def unregister():
bpy.app.handlers.depsgraph_update_post.remove(depsgraph_handler)
Is there a more robust way of doing it?