mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-18 08:19:59 +00:00
InputCommon: fix serialization of control expression with line breaks
The control expression editor allows line breaks, but the serialization was losing anything after the first line break (/r /n). Instead of opting to encode them and decode them on serialization (which I tried but was not safe, as it would lose /n written in the string by users), I opted to replace them with a space.
This commit is contained in:
parent
eb5cd9be78
commit
574477866f
4 changed files with 25 additions and 4 deletions
|
@ -117,7 +117,10 @@ void ControlGroup::SaveConfig(IniFile::Section* sec, const std::string& defdev,
|
|||
for (auto& c : controls)
|
||||
{
|
||||
// control expression
|
||||
sec->Set(group + c->name, c->control_ref->GetExpression(), "");
|
||||
std::string expression = c->control_ref->GetExpression();
|
||||
// We can't save line breaks in a single line config. Restoring them is too complicated.
|
||||
ReplaceBreaksWithSpaces(expression);
|
||||
sec->Set(group + c->name, expression, "");
|
||||
|
||||
// range
|
||||
sec->Set(group + c->name + "/Range", c->control_ref->range * 100.0, 100.0);
|
||||
|
@ -135,7 +138,9 @@ void ControlGroup::SaveConfig(IniFile::Section* sec, const std::string& defdev,
|
|||
}
|
||||
else
|
||||
{
|
||||
sec->Set(base + name, ext->GetSelectionSetting().GetInputReference().GetExpression(), "None");
|
||||
std::string expression = ext->GetSelectionSetting().GetInputReference().GetExpression();
|
||||
ReplaceBreaksWithSpaces(expression);
|
||||
sec->Set(base + name, expression, "None");
|
||||
}
|
||||
|
||||
for (auto& ai : ext->GetAttachmentList())
|
||||
|
|
|
@ -113,9 +113,16 @@ public:
|
|||
void SaveToIni(IniFile::Section& section, const std::string& group_name) const override
|
||||
{
|
||||
if (IsSimpleValue())
|
||||
{
|
||||
section.Set(group_name + m_details.ini_name, GetValue(), m_default_value);
|
||||
}
|
||||
else
|
||||
section.Set(group_name + m_details.ini_name, m_value.m_input.GetExpression(), "");
|
||||
{
|
||||
// We can't save line breaks in a single line config. Restoring them is too complicated.
|
||||
std::string expression = m_value.m_input.GetExpression();
|
||||
ReplaceBreaksWithSpaces(expression);
|
||||
section.Set(group_name + m_details.ini_name, expression, "");
|
||||
}
|
||||
}
|
||||
|
||||
bool IsSimpleValue() const override { return m_value.IsSimpleValue(); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue