diff --git a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs index bec7b8131..7ed32903b 100644 --- a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs @@ -272,11 +272,13 @@ namespace Ryujinx.Ava.UI.ViewModels.Input if (selected != DeviceType.None) { - LoadControllers(); - if (_isLoaded) { - LoadConfiguration(LoadDefaultConfiguration()); + LoadSelectedDeviceDefaults(); + } + else + { + LoadSelectedDeviceControllers(); } } @@ -287,6 +289,21 @@ namespace Ryujinx.Ava.UI.ViewModels.Input } } + public void ResetCurrentDeviceToDefaults() + { + LoadDevices(); + + if (_device <= 0 || _device >= Devices.Count || Devices[_device].Type == DeviceType.None) + { + return; + } + + MarkAsChanged(); + LoadSelectedDeviceDefaults(); + FindPairedDeviceInConfigFile(); + NotifyChanges(); + } + public object SelectedDeviceItem { get => _device >= 0 && _device < Devices.Count ? Devices[_device] : null; @@ -503,6 +520,20 @@ namespace Ryujinx.Ava.UI.ViewModels.Input NotifyChanges(); } + private void LoadSelectedDeviceControllers() + { + if (_device > 0 && _device < Devices.Count && Devices[_device].Type != DeviceType.None) + { + LoadControllers(); + } + } + + private void LoadSelectedDeviceDefaults() + { + LoadSelectedDeviceControllers(); + LoadConfiguration(LoadDefaultConfiguration()); + } + private void LoadInputDriver() { if (_device < 0) diff --git a/src/Ryujinx/UI/Views/Input/InputView.axaml b/src/Ryujinx/UI/Views/Input/InputView.axaml index b7ae4fc08..b58fcb697 100644 --- a/src/Ryujinx/UI/Views/Input/InputView.axaml +++ b/src/Ryujinx/UI/Views/Input/InputView.axaml @@ -175,7 +175,7 @@ MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" - Command="{Binding LoadDevices}"> + Command="{Binding ResetCurrentDeviceToDefaults}">