27 lines
642 B
GDScript
27 lines
642 B
GDScript
tool
|
|
extends Tree
|
|
|
|
signal moved(item, to_item, shift)
|
|
|
|
|
|
func get_drag_data(position): # begin drag
|
|
set_drop_mode_flags(DROP_MODE_INBETWEEN | DROP_MODE_ON_ITEM)
|
|
|
|
var preview = Label.new()
|
|
preview.text = get_selected().get_text(0)
|
|
set_drag_preview(preview) # not necessary
|
|
|
|
return get_selected() # TreeItem
|
|
|
|
|
|
func can_drop_data(position, data):
|
|
return data is TreeItem # you shall not pass!
|
|
|
|
|
|
func drop_data(position, item): # end drag
|
|
var to_item = get_item_at_position(position)
|
|
var shift = get_drop_section_at_position(position)
|
|
# shift == 0 if dropping on item, -1, +1 if in between
|
|
|
|
emit_signal('moved', item, to_item, shift)
|