DolphinQt: Fix calibration cancel behavior.
This commit is contained in:
parent
2c843ae06b
commit
2451a41a48
|
@ -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{});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue