Merge pull request #12710 from jordan-woyak/mouse-pointing-disable-relative

DolphinQt/Mapping: Disable relative input when "Mouse Controlled Pointing" button is pressed.
This commit is contained in:
Tilka 2024-04-20 14:14:03 +01:00 committed by GitHub
commit 20665ebce7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 2 deletions

View File

@ -172,7 +172,9 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
{ {
QPushButton* mouse_button = new QPushButton(tr("Use Mouse Controlled Pointing")); QPushButton* mouse_button = new QPushButton(tr("Use Mouse Controlled Pointing"));
form_layout->insertRow(2, mouse_button); form_layout->insertRow(2, mouse_button);
connect(mouse_button, &QCheckBox::clicked, [this, group] {
using ControllerEmu::Cursor;
connect(mouse_button, &QCheckBox::clicked, [this, group = static_cast<Cursor*>(group)] {
std::string default_device = g_controller_interface.GetDefaultDeviceString() + ":"; std::string default_device = g_controller_interface.GetDefaultDeviceString() + ":";
const std::string controller_device = GetController()->GetDefaultDevice().ToString() + ":"; const std::string controller_device = GetController()->GetDefaultDevice().ToString() + ":";
if (default_device == controller_device) if (default_device == controller_device)
@ -183,6 +185,9 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
group->SetControlExpression(1, fmt::format("`{}Cursor Y+`", default_device)); group->SetControlExpression(1, fmt::format("`{}Cursor Y+`", default_device));
group->SetControlExpression(2, fmt::format("`{}Cursor X-`", default_device)); group->SetControlExpression(2, fmt::format("`{}Cursor X-`", default_device));
group->SetControlExpression(3, fmt::format("`{}Cursor X+`", default_device)); group->SetControlExpression(3, fmt::format("`{}Cursor X+`", default_device));
group->SetRelativeInput(false);
emit ConfigChanged(); emit ConfigChanged();
GetController()->UpdateReferences(g_controller_interface); GetController()->UpdateReferences(g_controller_interface);
}); });

View File

@ -181,6 +181,11 @@ ControlState Cursor::GetVerticalOffset() const
return m_vertical_offset_setting.GetValue() / 100; return m_vertical_offset_setting.GetValue() / 100;
} }
void Cursor::SetRelativeInput(bool value)
{
m_relative_setting.SetValue(value);
}
bool Cursor::StateData::IsVisible() const bool Cursor::StateData::IsVisible() const
{ {
return !std::isnan(x); return !std::isnan(x);

View File

@ -40,6 +40,8 @@ public:
// Vertical offset in meters. // Vertical offset in meters.
ControlState GetVerticalOffset() const; ControlState GetVerticalOffset() const;
void SetRelativeInput(bool enabled);
private: private:
Cursor::StateData UpdateState(Cursor::ReshapeData input); Cursor::StateData UpdateState(Cursor::ReshapeData input);

View File

@ -186,7 +186,6 @@ public:
bool IsSimpleValue() const { return m_input.GetExpression().empty(); } bool IsSimpleValue() const { return m_input.GetExpression().empty(); }
private:
void SetValue(ValueType value) void SetValue(ValueType value)
{ {
m_value = value; m_value = value;
@ -195,6 +194,7 @@ private:
m_input.SetExpression(""); m_input.SetExpression("");
} }
private:
// Values are R/W by both UI and CPU threads. // Values are R/W by both UI and CPU threads.
mutable std::atomic<ValueType> m_value = {}; mutable std::atomic<ValueType> m_value = {};