From 356aa3d3aea6409477e28d5d0eeef47ed5a76de7 Mon Sep 17 00:00:00 2001 From: David Griswold Date: Sat, 8 Nov 2025 13:48:27 +0300 Subject: [PATCH] make it so clearing to default ACTUALLY clears gamepad settings --- .../settings/model/view/InputBindingSetting.kt | 2 ++ .../features/settings/ui/SettingsAdapter.kt | 15 +++++++++++++++ .../viewholder/InputBindingSettingViewHolder.kt | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt index 64827d89d..a2ff73f70 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt @@ -16,6 +16,7 @@ import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.R import org.citra.citra_emu.features.hotkeys.Hotkey import org.citra.citra_emu.features.settings.model.AbstractSetting +import org.citra.citra_emu.features.settings.model.AbstractStringSetting import org.citra.citra_emu.features.settings.model.Settings class InputBindingSetting( @@ -161,6 +162,7 @@ class InputBindingSetting( fun removeOldMapping() { // Try remove all possible keys we wrote for this setting val oldKey = preferences.getString(reverseKey, "") + (setting as AbstractStringSetting).string = "" if (oldKey != "") { preferences.edit() .remove(abstractSetting.key) // Used for ui text diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt index bc55bd5d6..4bd5d3b5f 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt @@ -555,6 +555,21 @@ class SettingsAdapter( return true } + fun onInputBindingLongClick(setting: InputBindingSetting, position: Int): Boolean { + MaterialAlertDialogBuilder(context) + .setMessage(R.string.reset_setting_confirmation) + .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> + setting.removeOldMapping() + notifyItemChanged(position) + fragmentView.onSettingChanged() + fragmentView.loadSettingsList() + } + .setNegativeButton(android.R.string.cancel, null) + .show() + + return true + } + fun onClickDisabledSetting(isRuntimeDisabled: Boolean) { val titleId = if (isRuntimeDisabled) R.string.setting_not_editable diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.kt index 07dc636cd..5d2a812e0 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.kt @@ -51,7 +51,7 @@ class InputBindingSettingViewHolder(val binding: ListItemSettingBinding, adapter override fun onLongClick(clicked: View): Boolean { if (setting.isEditable) { - adapter.onLongClick(setting.setting!!, bindingAdapterPosition) + adapter.onInputBindingLongClick(setting, bindingAdapterPosition) } else { adapter.onClickDisabledSetting(!setting.isEditable) }