Skip to content

Commit e4e57cf

Browse files
committed
Modified handled evaluation in state monitors. Formatting.
1 parent 59b2659 commit e4e57cf

4 files changed

Lines changed: 8 additions & 7 deletions

File tree

Assets/Tests/InputSystem/CoreTests_Events.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1256,7 +1256,7 @@ public void Events_ShouldRespectHandledPolicyUponUpdate(InputEventHandledPolicy
12561256
{
12571257
// Update setting to match desired scenario
12581258
InputSystem.inputEventHandledPolicy = policy;
1259-
1259+
12601260
// Use a boxed boolean to allow lambda to capture reference.
12611261
var data = new SuppressedActionEventData();
12621262

Packages/com.unity.inputsystem/InputSystem/Actions/InputActionState.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,7 +1544,7 @@ private void ProcessControlStateChange(int mapIndex, int controlIndex, int bindi
15441544
{
15451545
return;
15461546
}
1547-
1547+
15481548
// CALLBACK HERE
15491549
ProcessDefaultInteraction(ref trigger, actionIndex);
15501550
}
@@ -2504,7 +2504,7 @@ private void ChangePhaseOfActionInternal(int actionIndex, TriggerState* actionSt
25042504

25052505
//if (InputSystem.inputEventHandledPolicy == InputEventHandledPolicy.SuppressNotifications)
25062506
// return;
2507-
2507+
25082508
// Let listeners know.
25092509
var map = maps[trigger.mapIndex];
25102510
Debug.Assert(actionIndex >= mapIndices[trigger.mapIndex].actionStartIndex,

Packages/com.unity.inputsystem/InputSystem/InputManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3477,7 +3477,7 @@ private unsafe void OnUpdate(InputUpdateType updateType, ref InputEventBuffer ev
34773477
new InputEventPtr(currentEventReadPtr), device, k_InputOnEventMarker, "InputSystem.onEvent");
34783478

34793479
// If a listener marks the event as handled, we don't process it further.
3480-
if (m_InputEventHandledPolicy == InputEventHandledPolicy.SuppressProcessing &&
3480+
if (m_InputEventHandledPolicy == InputEventHandledPolicy.SuppressProcessing &&
34813481
currentEventReadPtr->handled)
34823482
{
34833483
m_InputEventStream.Advance(false);

Packages/com.unity.inputsystem/InputSystem/InputManagerStateMonitors.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ internal unsafe void FireStateChangeNotifications(int deviceIndex, double intern
382382

383383
// Call IStateChangeMonitor.NotifyControlStateChange for every monitor that is in
384384
// signalled state.
385-
eventPtr->handled = false;
385+
var savedHandled = eventPtr->handled;
386386
for (var i = 0; i < signals.length; ++i)
387387
{
388388
if (!signals.TestBit(i))
@@ -404,8 +404,9 @@ internal unsafe void FireStateChangeNotifications(int deviceIndex, double intern
404404

405405
// If the monitor signalled that it has processed the state change, reset all signalled
406406
// state monitors in the same group. This is what causes "SHIFT+B" to prevent "B" from
407-
// also triggering.
408-
if (eventPtr->handled)
407+
// also triggering. Note that we skip this if it was already marked handled before notifying
408+
// monitors.
409+
if (!savedHandled && eventPtr->handled)
409410
{
410411
var groupIndex = listeners[i].groupIndex;
411412
for (var n = i + 1; n < signals.length; ++n)

0 commit comments

Comments
 (0)