4 ## Script that handles drag and drop on the layer tree.
7 signal layer_moved(from:int, to:int)
10 ################################################################################
12 func _get_drag_data(position:Vector2) -> Variant:
13 if get_selected() == null or get_selected() == get_root():
16 if find_parent('StyleEditor').current_style.inherits != null:
19 drop_mode_flags = DROP_MODE_INBETWEEN
20 var preview := Label.new()
21 preview.text = " "+get_selected().get_text(0)
22 preview.add_theme_stylebox_override('normal', get_theme_stylebox("Background", "EditorStyles"))
23 set_drag_preview(preview)
28 func _can_drop_data(position:Vector2, data:Variant) -> bool:
29 return data is TreeItem
32 func _drop_data(position:Vector2, item:Variant) -> void:
33 var to_item := get_item_at_position(position)
34 var drop_section := get_drop_section_at_position(position)
36 if to_item == get_root():
37 if item.get_index() != 0:
38 layer_moved.emit(item.get_index(), 0)
42 if item.get_index() != get_root().get_child_count()-1:
43 layer_moved.emit(item.get_index(), get_root().get_child_count()-1)
46 var to_idx: int = to_item.get_index()+max(0, drop_section)
47 if to_idx > item.get_index():
50 if to_idx != item.get_index():
51 layer_moved.emit(item.get_index(), to_idx)