class_name Track extends Button signal on_deleted signal on_renamed signal on_duplicated func _ready(): var menu: PopupMenu = $PopupMenu menu.add_item("Rename", 0) menu.add_item("Delete", 1) menu.add_item("Duplicate", 2) menu.id_pressed.connect(_on_menu_option) func _on_menu_option(id: int): match id: 0: rename() 1: delete() 2: duplicate_track() pass func delete(): queue_free() var idx = get_index() print(idx) on_deleted.emit(idx) pass func rename(): %TrackName.grab_focus() pass func duplicate_track(): pass func _gui_input(event): if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: var popup = %PopupMenu #%PopupMenu.popup(get_global_mouse_position()) var pos = get_global_mouse_position() var rect = Rect2i(pos, popup.get_contents_minimum_size()) popup.popup(rect)