Currently, almost imposible from GDScript.
Even if you hide the mouse before dragging, while dragging the mouse is always visible, and there is no easy way to know what happens in the dragging process, no options, no signals.
So I ended dealing with custom mouse cursors, they need to be 32x32 size.
I draw a 100% alpha square then added a 50% white pixel at column 3 row 3 from the pixel grid, so it’s almost imperceptible. The code at main script:
var can_drop_cursor_img = load("res://assets/cursors/can_drop.png")
var forbidden_cursor_img = load("res://assets/cursors/forbidden.png")
Input.set_custom_mouse_cursor(can_drop_cursor_img,7)
Input.set_custom_mouse_cursor(forbidden_cursor_img,8)
7 is Input.CURSOR_CAN_DROP and 8 is Input.CURSOR_FORBIDDEN.
Note, I didn’t use the same image file for both because of “technical issues” only one will work, so that’s why I gave them different file names.
For anyone still trying to figure out how to avoid “stop” icon, I found a way by making the container in the back (ideally the whole screen) also accepting drop event, so the icon will not appear.