From ff18b02f21a04f7092b58be04be5a40df3ef993b Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 13 Jul 2018 09:02:14 +0000 Subject: uic: Revert the microoptimization patch introducing QStringLiteral This reverts the following commits: d12d2949d1e4ac08a47928ef27bc45459b3fb104 26c3bec09bccf9006f5ef4945a428d9ef56c1d12 49b08f96e824f49fab9aa5c9a1a0ed582d4558bb We can't easily predict all code paths for QDesigner with such a microoptimization. We also don't want to generate three different string constructions depending on some sophisticated heuristics. [ChangeLog][uic] The -no-stringliteral option is now deprecated and UIC will not generate QStringLiteral anymore. Task-number: QTBUG-65251 Task-number: QTBUG-51602 Change-Id: I34a5a1934a8df19c5c84ac2ba8e5168ce5665037 Reviewed-by: Thiago Macieira --- src/tools/uic/cpp/cppwriteinitialization.cpp | 114 +++++++++++++++------------ 1 file changed, 63 insertions(+), 51 deletions(-) (limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp') diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index 9ab5fd4eb0..0e980ced1c 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -475,21 +475,6 @@ WriteInitialization::WriteInitialization(Uic *uic) : { } -QString WriteInitialization::writeString(const QString &s, const QString &indent) const -{ - unsigned flags = 0; - const QString ret = fixString(s, indent, &flags); - if (flags & Utf8String) - return QLatin1String("QString::fromUtf8(") + ret + QLatin1Char(')'); - // MSVC cannot concat L"foo" "bar" (C2308: concatenating mismatched strings), - // use QLatin1String instead (all platforms to avoid cross-compiling issues). - if (flags & MultiLineString) - return QLatin1String("QLatin1String(") + ret + QLatin1Char(')'); - const QLatin1String stringWrapper = m_uic->option().stringLiteral ? - QLatin1String("QStringLiteral(") : QLatin1String("QLatin1String("); - return stringWrapper + ret + QLatin1Char(')'); -} - void WriteInitialization::acceptUI(DomUI *node) { m_actionGroupChain.push(0); @@ -529,7 +514,7 @@ void WriteInitialization::acceptUI(DomUI *node) continue; const QString varConn = connection + QLatin1String("Connection"); - m_output << m_indent << varConn << " = QSqlDatabase::database(" << writeString(connection, m_dindent) << ");\n"; + m_output << m_indent << varConn << " = QSqlDatabase::database(" << fixString(connection, m_dindent) << ");\n"; } acceptWidget(node->elementWidget()); @@ -1141,7 +1126,7 @@ QString WriteInitialization::writeStringListProperty(const DomStringList *list) str << '\n' << m_indent << " << " << trCall(values.at(i), comment); } else { for (int i = 0; i < values.size(); ++i) - str << " << " << writeString(values.at(i), m_dindent); + str << " << QString::fromUtf8(" << fixString(values.at(i), m_dindent) << ')'; } return propertyValue; } @@ -1156,8 +1141,8 @@ void WriteInitialization::writeProperties(const QString &varName, if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QAxWidget"))) { DomPropertyMap properties = propertyMap(lst); if (DomProperty *p = properties.value(QLatin1String("control"))) { - m_output << m_indent << varName << "->setControl(" - << writeString(toString(p->elementString()), m_dindent) << ");\n"; + m_output << m_indent << varName << "->setControl(QString::fromUtf8(" + << fixString(toString(p->elementString()), m_dindent) << "));\n"; } } @@ -1168,7 +1153,7 @@ void WriteInitialization::writeProperties(const QString &varName, } if (!(flags & WritePropertyIgnoreObjectName)) m_output << m_indent << indent << varName - << "->setObjectName(" << writeString(varName, m_dindent) << ");\n"; + << "->setObjectName(QString::fromUtf8(" << fixString(varName, m_dindent) << "));\n"; int leftMargin, topMargin, rightMargin, bottomMargin; leftMargin = topMargin = rightMargin = bottomMargin = -1; @@ -1467,8 +1452,8 @@ void WriteInitialization::writeProperties(const QString &varName, case DomProperty::Url: { const DomUrl* u = p->elementUrl(); - propertyValue = QString::fromLatin1("QUrl(%1)") - .arg(writeString(u->elementString()->text(), m_dindent)); + propertyValue = QString::fromLatin1("QUrl(QString::fromUtf8(%1))") + .arg(fixString(u->elementString()->text(), m_dindent)); break; } case DomProperty::Brush: @@ -1572,8 +1557,8 @@ QString WriteInitialization::writeFontProperties(const DomFont *f) m_output << m_indent << "QFont " << fontName << ";\n"; if (f->hasElementFamily() && !f->elementFamily().isEmpty()) { - m_output << m_indent << fontName << ".setFamily(" << writeString(f->elementFamily(), m_dindent) - << ");\n"; + m_output << m_indent << fontName << ".setFamily(QString::fromUtf8(" + << fixString(f->elementFamily(), m_dindent) << "));\n"; } if (f->hasElementPointSize() && f->elementPointSize() > 0) { m_output << m_indent << fontName << ".setPointSize(" << f->elementPointSize() @@ -1616,27 +1601,51 @@ QString WriteInitialization::writeFontProperties(const DomFont *f) } // Post 4.4 write resource icon -void WriteInitialization::writeResourceIcon(QTextStream &output, - const QString &iconName, - const QString &indent, - const DomResourceIcon *i) const -{ - if (i->hasElementNormalOff()) - output << indent << iconName << ".addFile(" << writeString(i->elementNormalOff()->text(), indent) << ", QSize(), QIcon::Normal, QIcon::Off);\n"; - if (i->hasElementNormalOn()) - output << indent << iconName << ".addFile(" << writeString(i->elementNormalOn()->text(), indent) << ", QSize(), QIcon::Normal, QIcon::On);\n"; - if (i->hasElementDisabledOff()) - output << indent << iconName << ".addFile(" << writeString(i->elementDisabledOff()->text(), indent) << ", QSize(), QIcon::Disabled, QIcon::Off);\n"; - if (i->hasElementDisabledOn()) - output << indent << iconName << ".addFile(" << writeString(i->elementDisabledOn()->text(), indent) << ", QSize(), QIcon::Disabled, QIcon::On);\n"; - if (i->hasElementActiveOff()) - output << indent << iconName << ".addFile(" << writeString(i->elementActiveOff()->text(), indent) << ", QSize(), QIcon::Active, QIcon::Off);\n"; - if (i->hasElementActiveOn()) - output << indent << iconName << ".addFile(" << writeString(i->elementActiveOn()->text(), indent) << ", QSize(), QIcon::Active, QIcon::On);\n"; - if (i->hasElementSelectedOff()) - output << indent << iconName << ".addFile(" << writeString(i->elementSelectedOff()->text(), indent) << ", QSize(), QIcon::Selected, QIcon::Off);\n"; - if (i->hasElementSelectedOn()) - output << indent << iconName << ".addFile(" << writeString(i->elementSelectedOn()->text(), indent) << ", QSize(), QIcon::Selected, QIcon::On);\n"; +static void writeResourceIcon(QTextStream &output, + const QString &iconName, + const QString &indent, + const DomResourceIcon *i) +{ + if (i->hasElementNormalOff()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementNormalOff()->text(), indent) + << "), QSize(), QIcon::Normal, QIcon::Off);\n"; + } + if (i->hasElementNormalOn()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementNormalOn()->text(), indent) + << "), QSize(), QIcon::Normal, QIcon::On);\n"; + } + if (i->hasElementDisabledOff()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementDisabledOff()->text(), indent) + << "), QSize(), QIcon::Disabled, QIcon::Off);\n"; + } + if (i->hasElementDisabledOn()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementDisabledOn()->text(), indent) + << "), QSize(), QIcon::Disabled, QIcon::On);\n"; + } + if (i->hasElementActiveOff()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementActiveOff()->text(), indent) + << "), QSize(), QIcon::Active, QIcon::Off);\n"; + } + if (i->hasElementActiveOn()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementActiveOn()->text(), indent) + << "), QSize(), QIcon::Active, QIcon::On);\n"; + } + if (i->hasElementSelectedOff()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementSelectedOff()->text(), indent) + << "), QSize(), QIcon::Selected, QIcon::Off);\n"; + } + if (i->hasElementSelectedOn()) { + output << indent << iconName << ".addFile(QString::fromUtf8(" + << fixString(i->elementSelectedOn()->text(), indent) + << "), QSize(), QIcon::Selected, QIcon::On);\n"; + } } QString WriteInitialization::writeIconProperties(const DomResourceIcon *i) @@ -1658,7 +1667,7 @@ QString WriteInitialization::writeIconProperties(const DomResourceIcon *i) writeResourceIcon(m_output, iconName, m_indent, i); } else { // Theme: Generate code to check the theme and default to resource - const QString themeIconName = writeString(i->attributeTheme(), QString()); + const QString themeIconName = fixString(i->attributeTheme(), QString()); if (iconHasStatePixmaps(i)) { // Theme + default state pixmaps: // Generate code to check the theme and default to state pixmaps @@ -1670,8 +1679,8 @@ QString WriteInitialization::writeIconProperties(const DomResourceIcon *i) m_output << "QString "; m_firstThemeIcon = false; } - m_output << themeNameStringVariableC << " = " - << themeIconName << ";\n"; + m_output << themeNameStringVariableC << " = QString::fromUtf8(" + << themeIconName << ");\n"; m_output << m_indent << "if (QIcon::hasThemeIcon(" << themeNameStringVariableC << ")) {\n" @@ -1682,8 +1691,8 @@ QString WriteInitialization::writeIconProperties(const DomResourceIcon *i) } else { // Theme, but no state pixmaps: Construct from theme directly. m_output << m_indent << "QIcon " << iconName - << "(QIcon::fromTheme(" - << themeIconName << "));\n"; + << "(QIcon::fromTheme(QString::fromUtf8(" + << themeIconName << ")));\n"; } // Theme, but not state } // >= 4.4 } else { // pre-4.4 legacy @@ -2323,7 +2332,10 @@ QString WriteInitialization::noTrCall(DomString *str, const QString &defaultStri return QString(); if (str) value = str->text(); - return writeString(value, m_dindent); + QString ret = QLatin1String("QString::fromUtf8("); + ret += fixString(value, m_dindent); + ret += QLatin1Char(')'); + return ret; } QString WriteInitialization::autoTrCall(DomString *str, const QString &defaultString) const -- cgit v1.2.3