summaryrefslogtreecommitdiffstats
path: root/src/yuzu/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r--src/yuzu/main.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 9275cba53..bc97f9d53 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -773,10 +773,22 @@ void GMainWindow::InitializeWidgets() {
dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
dock_status_button->setFocusPolicy(Qt::NoFocus);
connect(dock_status_button, &QPushButton::clicked, [&] {
- Settings::values.use_docked_mode.SetValue(!Settings::values.use_docked_mode.GetValue());
- dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
- OnDockedModeChanged(!Settings::values.use_docked_mode.GetValue(),
- Settings::values.use_docked_mode.GetValue());
+ const bool is_docked = Settings::values.use_docked_mode.GetValue();
+ auto& controller_type = Settings::values.players.GetValue()[0].controller_type;
+
+ if (!is_docked && controller_type == Settings::ControllerType::Handheld) {
+ QMessageBox::warning(this, tr("Invalid config detected"),
+ tr("Handheld controller can't be used on docked mode. Pro "
+ "controller will be selected."));
+ controller_type = Settings::ControllerType::ProController;
+ ConfigureDialog configure_dialog(this, hotkey_registry, input_subsystem.get());
+ configure_dialog.ApplyConfiguration();
+ controller_dialog->refreshConfiguration();
+ }
+
+ Settings::values.use_docked_mode.SetValue(!is_docked);
+ dock_status_button->setChecked(!is_docked);
+ OnDockedModeChanged(is_docked, !is_docked);
});
dock_status_button->setText(tr("DOCK"));
dock_status_button->setCheckable(true);