diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 6b97ade3..e8bd2ac4 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1078,6 +1078,7 @@ AdvSceneSwitcher.action.variable.askForValuePrompt="Assign value to variable:" AdvSceneSwitcher.action.variable.mathExpression.example="( 1 + 2 * 3 ) / 4" AdvSceneSwitcher.action.variable.findAndReplace.find="Text to find" AdvSceneSwitcher.action.variable.findAndReplace.replace="Text to replace with" +AdvSceneSwitcher.action.variable.findAndReplace.replace.tooltip="Using \1, \2, etc. to represent first, second, etc. capture groups is supported." AdvSceneSwitcher.action.variable.subString.begin="Beginning" AdvSceneSwitcher.action.variable.subString.all="All" AdvSceneSwitcher.action.variable.invalidSelection="Invalid selection!" diff --git a/lib/macro/macro-action-variable.cpp b/lib/macro/macro-action-variable.cpp index 9040d46c..2b770b5c 100644 --- a/lib/macro/macro-action-variable.cpp +++ b/lib/macro/macro-action-variable.cpp @@ -150,18 +150,12 @@ void MacroActionVariable::HandleFindAndReplace(Variable *var) var->SetValue(value); return; } - QString resultString = QString::fromStdString(value); + QString replacement = QString::fromStdString(_replaceStr); auto regex = _findRegex.GetRegularExpression(_findStr); - auto matchIterator = regex.globalMatch(QString::fromStdString(value)); - int offset = 0; - while (matchIterator.hasNext()) { - QRegularExpressionMatch match = matchIterator.next(); - resultString.replace(match.capturedStart() + offset, - match.capturedLength(), replacement); - offset += replacement.length() - match.capturedLength(); - } - var->SetValue(resultString.toStdString()); + auto result = QString::fromStdString(value); + result = result.replace(regex, replacement); + var->SetValue(result.toStdString()); } void MacroActionVariable::HandleMathExpression(Variable *var) @@ -739,6 +733,8 @@ MacroActionVariableEdit::MacroActionVariableEdit( _regexMatchIdx->setMinimum(1); _regexMatchIdx->setMaximum(999); _regexMatchIdx->setSuffix("."); + _replaceStr->setToolTip(obs_module_text( + "AdvSceneSwitcher.action.variable.findAndReplace.replace.tooltip")); _inputPrompt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); _sceneItemIndex->setMinimum(1);