DolphinQt: Fix calibration cancel behavior.

This commit is contained in:
Jordan Woyak 2020-02-25 18:36:56 -06:00
parent 2c843ae06b
commit 2451a41a48
2 changed files with 10 additions and 15 deletions

View File

@ -825,11 +825,11 @@ void CalibrationWidget::SetupActions()
connect(calibrate_action, &QAction::triggered, [this]() { connect(calibrate_action, &QAction::triggered, [this]() {
StartCalibration(); StartCalibration();
m_input.SetCenter({0, 0}); m_new_center = Common::DVec2{};
}); });
connect(center_action, &QAction::triggered, [this]() { connect(center_action, &QAction::triggered, [this]() {
StartCalibration(); StartCalibration();
m_is_centering = true; m_new_center = std::nullopt;
}); });
connect(reset_action, &QAction::triggered, [this]() { connect(reset_action, &QAction::triggered, [this]() {
m_input.SetCalibrationToDefault(); m_input.SetCalibrationToDefault();
@ -846,7 +846,7 @@ void CalibrationWidget::SetupActions()
m_completion_action = new QAction(tr("Finish Calibration"), this); m_completion_action = new QAction(tr("Finish Calibration"), this);
connect(m_completion_action, &QAction::triggered, [this]() { connect(m_completion_action, &QAction::triggered, [this]() {
m_input.SetCenter(m_new_center); m_input.SetCenter(GetCenter());
m_input.SetCalibrationData(std::move(m_calibration_data)); m_input.SetCalibrationData(std::move(m_calibration_data));
m_informative_timer->stop(); m_informative_timer->stop();
SetupActions(); SetupActions();
@ -857,8 +857,6 @@ void CalibrationWidget::StartCalibration()
{ {
m_calibration_data.assign(m_input.CALIBRATION_SAMPLE_COUNT, 0.0); m_calibration_data.assign(m_input.CALIBRATION_SAMPLE_COUNT, 0.0);
m_new_center = {0, 0};
// Cancel calibration. // Cancel calibration.
const auto cancel_action = new QAction(tr("Cancel Calibration"), this); const auto cancel_action = new QAction(tr("Cancel Calibration"), this);
connect(cancel_action, &QAction::triggered, [this]() { connect(cancel_action, &QAction::triggered, [this]() {
@ -883,14 +881,13 @@ void CalibrationWidget::Update(Common::DVec2 point)
QFont f = parentWidget()->font(); QFont f = parentWidget()->font();
QPalette p = parentWidget()->palette(); QPalette p = parentWidget()->palette();
if (m_is_centering) // Use current point if center is being calibrated.
{ if (!m_new_center.has_value())
m_new_center = point; m_new_center = point;
m_is_centering = false;
} if (IsCalibrating())
else if (IsCalibrating())
{ {
m_input.UpdateCalibrationData(m_calibration_data, point - m_new_center); m_input.UpdateCalibrationData(m_calibration_data, point - *m_new_center);
if (IsCalibrationDataSensible(m_calibration_data)) if (IsCalibrationDataSensible(m_calibration_data))
{ {
@ -920,5 +917,5 @@ double CalibrationWidget::GetCalibrationRadiusAtAngle(double angle) const
Common::DVec2 CalibrationWidget::GetCenter() const Common::DVec2 CalibrationWidget::GetCenter() const
{ {
return m_new_center; return m_new_center.value_or(Common::DVec2{});
} }

View File

@ -203,7 +203,5 @@ private:
QAction* m_completion_action; QAction* m_completion_action;
ControllerEmu::ReshapableInput::CalibrationData m_calibration_data; ControllerEmu::ReshapableInput::CalibrationData m_calibration_data;
QTimer* m_informative_timer; QTimer* m_informative_timer;
std::optional<Common::DVec2> m_new_center;
bool m_is_centering = false;
Common::DVec2 m_new_center;
}; };