diff --git a/src/Gui/CommandLink.cpp b/src/Gui/CommandLink.cpp index a24e671ea3..41dc31c699 100644 --- a/src/Gui/CommandLink.cpp +++ b/src/Gui/CommandLink.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include "Action.h" #include "Application.h" @@ -50,8 +51,9 @@ FC_LOG_LEVEL_INIT("CommandLink", true, true) using namespace Gui; static void setLinkLabel(App::DocumentObject *obj, const char *doc, const char *name) { - const char *label = obj->Label.getValue(); - Command::doCommand(Command::Doc,"App.getDocument('%s').getObject('%s').Label='%s'",doc,name,label); + std::string label = obj->Label.getValue(); + label = Base::Tools::escapeEncodeString(label); + Command::doCommand(Command::Doc,"App.getDocument('%s').getObject('%s').Label='%s'",doc,name,label.c_str()); } //////////////////////////////////////////////////////////////////////////////////////////// @@ -195,7 +197,7 @@ void StdCmdLinkMakeGroup::activated(int option) { Command::abortCommand(); e.ReportException(); } -} +} //////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/Gui/ExpressionBinding.cpp b/src/Gui/ExpressionBinding.cpp index 1ed7b53fee..d6d8972ef8 100644 --- a/src/Gui/ExpressionBinding.cpp +++ b/src/Gui/ExpressionBinding.cpp @@ -159,7 +159,10 @@ std::string ExpressionBinding::getExpressionString(bool no_throw) const std::string ExpressionBinding::getEscapedExpressionString() const { - return Base::Tools::escapedUnicodeFromUtf8(getExpressionString(false).c_str()); + std::string escapedstr; + escapedstr = Base::Tools::escapedUnicodeFromUtf8(getExpressionString(false).c_str()); + escapedstr = Base::Tools::escapeQuotesFromString(escapedstr); + return escapedstr; } bool ExpressionBinding::assignToProperty(const std::string & propName, double value) diff --git a/src/Mod/PartDesign/Gui/CommandBody.cpp b/src/Mod/PartDesign/Gui/CommandBody.cpp index 356af20657..412a905bca 100644 --- a/src/Mod/PartDesign/Gui/CommandBody.cpp +++ b/src/Mod/PartDesign/Gui/CommandBody.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -194,8 +195,9 @@ void CmdPartDesignBody::activated(int iMsg) // add the Body feature itself, and make it active doCommand(Doc,"App.activeDocument().addObject('PartDesign::Body','%s')", bodyString); // set Label for i18n/L10N - QByteArray labelByteArray = QObject::tr("Body").toUtf8(); - doCommand(Doc,"App.ActiveDocument.getObject('%s').Label = '%s'", bodyString, labelByteArray.constData()); + std::string labelString = QObject::tr("Body").toUtf8().toStdString(); + labelString = Base::Tools::escapeEncodeString(labelString); + doCommand(Doc,"App.ActiveDocument.getObject('%s').Label = '%s'", bodyString, labelString.c_str()); if (baseFeature) { if (partOfBaseFeature){ //withdraw base feature from Part, otherwise visibility madness results diff --git a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp index 479b058d86..3fb4b604ce 100644 --- a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp +++ b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp @@ -203,11 +203,13 @@ void EditDatumDialog::accepted() ui_ins_datum->labelEdit->apply(); } else { + auto unitString = newQuant.getUnit().getString().toUtf8().toStdString(); + unitString = Base::Tools::escapeQuotesFromString(unitString); Gui::cmdAppObjectArgs(sketch, "setDatum(%i,App.Units.Quantity('%f %s'))", ConstrNbr, newDatum, - (const char*)newQuant.getUnit().getString().toUtf8()); + unitString); } } @@ -215,6 +217,7 @@ void EditDatumDialog::accepted() if (Base::Tools::toStdString(constraintName) != sketch->Constraints[ConstrNbr]->Name) { std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(constraintName.toUtf8().constData()); + escapedstr = Base::Tools::escapeQuotesFromString(escapedstr); Gui::cmdAppObjectArgs(sketch, "renameConstraint(%d, u'%s')", ConstrNbr, diff --git a/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp b/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp index a2fb26d722..43c8d1353c 100644 --- a/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp +++ b/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp @@ -299,6 +299,7 @@ void PropertiesDialog::apply() if (orgDisplayUnit != displayUnit) { std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(displayUnit.stringRep.c_str()); + escapedstr = Base::Tools::escapeQuotesFromString(escapedstr); Gui::cmdAppObjectArgs(sheet, "setDisplayUnit('%s', '%s')", i->rangeString().c_str(),