diff --git a/Assets/Tests/InputSystem/Plugins/InputForUITests.cs b/Assets/Tests/InputSystem/Plugins/InputForUITests.cs index c279d7a157..878dbee010 100644 --- a/Assets/Tests/InputSystem/Plugins/InputForUITests.cs +++ b/Assets/Tests/InputSystem/Plugins/InputForUITests.cs @@ -92,6 +92,33 @@ public void InputSystemActionAssetIsNotNull() "Test is invalid since InputSystemProvider actions are not available"); } + [Test] + [Category(kTestCategory)] + public void Shutdown_DoesNotDisableProjectWideActionsAsset() + { + var asset = ScriptableObject.CreateInstance(); + var uiMap = new InputActionMap("UI"); + uiMap.AddAction("Point", InputActionType.PassThrough, "/position"); + uiMap.AddAction("Navigate", InputActionType.PassThrough, "/leftStick"); + uiMap.AddAction("Submit", InputActionType.Button, "/enter"); + uiMap.AddAction("Cancel", InputActionType.Button, "/escape"); + uiMap.AddAction("Click", InputActionType.PassThrough, "/leftButton"); + uiMap.AddAction("MiddleClick", InputActionType.PassThrough, "/middleButton"); + uiMap.AddAction("RightClick", InputActionType.PassThrough, "/rightButton"); + uiMap.AddAction("ScrollWheel", InputActionType.PassThrough, "/scroll"); + asset.AddActionMap(uiMap); + + InputSystem.s_Manager.actions = asset; + + m_InputSystemProvider.Initialize(); + Assert.That(asset.enabled, Is.True, "Project-wide actions should be enabled by provider initialization."); + + m_InputSystemProvider.Shutdown(); + Assert.That(asset.enabled, Is.True, "Project-wide actions must remain enabled after provider shutdown."); + + Object.DestroyImmediate(asset); + } + [Test] [Category(kTestCategory)] // Checks that mouse events are ignored when a touch is active. diff --git a/Packages/com.unity.inputsystem/InputSystem/Plugins/InputForUI/InputSystemProvider.cs b/Packages/com.unity.inputsystem/InputSystem/Plugins/InputForUI/InputSystemProvider.cs index 1b056f7e76..cfdfd07c98 100644 --- a/Packages/com.unity.inputsystem/InputSystem/Plugins/InputForUI/InputSystemProvider.cs +++ b/Packages/com.unity.inputsystem/InputSystem/Plugins/InputForUI/InputSystemProvider.cs @@ -664,7 +664,7 @@ void UnregisterActions() UnregisterAction(ref m_RightClickAction, OnRightClickPerformed); UnregisterAction(ref m_ScrollWheelAction, OnScrollWheelPerformed); - if (m_InputActionAsset != null) + if (m_InputActionAsset != null && m_InputActionAsset != InputSystem.actions) m_InputActionAsset.Disable(); }