aboutsummaryrefslogtreecommitdiff
path: root/touch_item_list
diff options
context:
space:
mode:
Diffstat (limited to 'touch_item_list')
-rw-r--r--touch_item_list/touch_item_list.gd31
1 files changed, 8 insertions, 23 deletions
diff --git a/touch_item_list/touch_item_list.gd b/touch_item_list/touch_item_list.gd
index 0534bb2..07d8f30 100644
--- a/touch_item_list/touch_item_list.gd
+++ b/touch_item_list/touch_item_list.gd
@@ -27,6 +27,7 @@ func _process(delta: float):
func pointer_input_on_press_handler(pointer: PointerInputSensor.PointerInputData):
is_pointer_dragging = true
+ grab_focus()
func pointer_input_on_drag_handler(pointer: PointerInputSensor.PointerInputData):
@@ -40,29 +41,13 @@ func pointer_input_on_end_drag_handler(pointer: PointerInputSensor.PointerInputD
func pointer_input_on_click_handler(pointer: PointerInputSensor.PointerInputData):
- var target := self
- var position := target.get_global_mouse_position() - target.rect_global_position
-
- var event_touch := InputEventScreenTouch.new()
- event_touch.index = 0
- event_touch.position = position
-
- var event_mouse := InputEventMouseButton.new()
- event_mouse.button_index = BUTTON_LEFT
- event_mouse.button_mask = BUTTON_MASK_LEFT
- event_mouse.position = position
-
- event_mouse.pressed = true
- event_touch.pressed = true
- target._gui_input(event_mouse)
- target._gui_input(event_touch)
-
- target.grab_focus()
-
- event_mouse.pressed = false
- event_touch.pressed = false
- target._gui_input(event_mouse)
- target._gui_input(event_touch)
+ var selected_idx := get_item_at_position(pointer.current_position - rect_global_position, true)
+ if selected_idx >= 0:
+ select(selected_idx)
+ emit_signal("item_selected", selected_idx)
+ else:
+ unselect_all()
+ emit_signal("nothing_selected")
func pointer_input_on_scroll_handler(pointer: PointerInputSensor.PointerInputData):