-
Notifications
You must be signed in to change notification settings - Fork 18
Labels
From UsersIssues reported by customersIssues reported by customersbugSomething isn't workingSomething isn't workingpostponed
Description
Description:
The problem is that the custom Button requires a specific sequence of pointer events to be fired for a click to register successfully. The custom button has strict validation checks in its OnPointerUp() method that are not currently being met.
For a click to be valid, the following conditions must be true:
- isPointerInside must be true (which requires OnPointerEnter to be called first).
- !isDragging and !eventData.dragging must be true.
- pointerPress and raycast data must be properly set.
Currently, AltTester only executes the pointerUpHandler, which is insufficient to set the required state on the custom button.
Proposed Fix:
To resolve this, AltTester must simulate the complete pointer event sequence: OnPointerEnter, OnPointerDown, and then OnPointerUp.
The following code demonstrates the required implementation:
var pointerEventData = new PointerEventData(EventSystem.current)
{
position = screenPosition,
button = PointerEventData.InputButton.Left,
eligibleForClick = true,
pressPosition = screenPosition,
pointerPress = eventSystemTarget,
pointerCurrentRaycast = new RaycastResult { gameObject = eventSystemTarget }
};
// Step 1: OnPointerEnter (sets isPointerInside = true)
ExecuteEvents.ExecuteHierarchy(eventSystemTarget, pointerEventData, ExecuteEvents.pointerEnterHandler);
// Step 2: OnPointerDown (sets required state for the click)
ExecuteEvents.ExecuteHierarchy(eventSystemTarget, pointerEventData, ExecuteEvents.pointerDownHandler);
// Step 3: OnPointerUp (now triggers the click successfully)
ExecuteEvents.ExecuteHierarchy(eventSystemTarget, pointerEventData, ExecuteEvents.pointerUpHandler);
Metadata
Metadata
Assignees
Labels
From UsersIssues reported by customersIssues reported by customersbugSomething isn't workingSomething isn't workingpostponed