diff --git a/src/wx/CMakeLists.txt b/src/wx/CMakeLists.txt
index 5d798f79..8d936774 100644
--- a/src/wx/CMakeLists.txt
+++ b/src/wx/CMakeLists.txt
@@ -773,6 +773,7 @@ set(
dialogs/game-boy-config.cpp
dialogs/game-maker.cpp
dialogs/gb-rom-info.cpp
+ dialogs/joypad-config.cpp
widgets/group-check-box.cpp
widgets/keep-on-top-styler.cpp
widgets/option-validator.cpp
@@ -826,6 +827,7 @@ set(
dialogs/game-boy-config.h
dialogs/game-maker.h
dialogs/gb-rom-info.h
+ dialogs/joypad-config.h
dialogs/validated-child.h
widgets/dpi-support.h
widgets/group-check-box.h
diff --git a/src/wx/cmdevents.cpp b/src/wx/cmdevents.cpp
index 792f43cc..d3370c06 100644
--- a/src/wx/cmdevents.cpp
+++ b/src/wx/cmdevents.cpp
@@ -2227,18 +2227,22 @@ EVT_HANDLER(EmulatorDirectories, "Directories...")
EVT_HANDLER(JoypadConfigure, "Joypad options...")
{
- wxDialog* dlg = GetXRCDialog("JoypadConfig");
joy.PollAllJoysticks();
auto frame = wxGetApp().frame;
bool joy_timer = frame->IsJoyPollTimerRunning();
- if (!joy_timer) frame->StartJoyPollTimer();
+ if (!joy_timer) {
+ frame->StartJoyPollTimer();
+ }
- if (ShowModal(dlg) == wxID_OK)
- update_opts();
+ if (ShowModal(GetXRCDialog("JoypadConfig")) == wxID_OK) {
+ update_joypad_opts();
+ }
- if (!joy_timer) frame->StopJoyPollTimer();
+ if (!joy_timer) {
+ frame->StopJoyPollTimer();
+ }
SetJoystick();
}
diff --git a/src/wx/config/internal/option-internal.cpp b/src/wx/config/internal/option-internal.cpp
index 009db2a0..bb729d51 100644
--- a/src/wx/config/internal/option-internal.cpp
+++ b/src/wx/config/internal/option-internal.cpp
@@ -209,6 +209,9 @@ std::array