diff options
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu/debugger/controller.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 20 | 
3 files changed, 24 insertions, 4 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 125feb86b..21d1dc174 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -514,6 +514,13 @@ void Config::ReadControlValues() {          ReadSetting(QStringLiteral("mouse_panning_sensitivity"), 1).toFloat();      ReadSettingGlobal(Settings::values.use_docked_mode, QStringLiteral("use_docked_mode"), true); + +    // Disable docked mode if handheld is selected +    const auto controller_type = Settings::values.players.GetValue()[0].controller_type; +    if (controller_type == Settings::ControllerType::Handheld) { +        Settings::values.use_docked_mode.SetValue(false); +    } +      ReadSettingGlobal(Settings::values.vibration_enabled, QStringLiteral("vibration_enabled"),                        true);      ReadSettingGlobal(Settings::values.enable_accurate_vibrations, diff --git a/src/yuzu/debugger/controller.cpp b/src/yuzu/debugger/controller.cpp index 7186eac76..d85408ac6 100644 --- a/src/yuzu/debugger/controller.cpp +++ b/src/yuzu/debugger/controller.cpp @@ -38,6 +38,7 @@ void ControllerDialog::refreshConfiguration() {      widget->SetPlayerInputRaw(player, players[player].buttons, players[player].analogs);      widget->SetConnectedStatus(players[player].connected);      widget->SetControllerType(players[player].controller_type); +    widget->repaint();  }  QAction* ControllerDialog::toggleViewAction() { 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); | 
