You can either register it as synchronous callback or as asynchronous callback. The latter will filter out repetitions and will be called on the UI thread.
@Christoph-Hart Thank you - I'm still a little lost, though. I'm doing a panel drag to a DAW MIDI track, and I'm trying to avoid writing a temporary MIDI file and then erasing it. I thought I could use the embedded file? (But the drag signature seems to be hungry for file objects.)
Yeah I think the issue is that when you set or change the floating tile type it internally resets the colours. So by flipping the order of operations we can get the desired behaviour.