Hello community, here is the log from the commit of package kservice for openSUSE:Factory checked in at 2018-01-09 14:44:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kservice (Old) and /work/SRC/openSUSE:Factory/.kservice.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kservice" Tue Jan 9 14:44:22 2018 rev:53 rq:559466 version:5.41.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kservice/kservice.changes 2017-11-16 14:40:51.559009104 +0100 +++ /work/SRC/openSUSE:Factory/.kservice.new/kservice.changes 2018-01-09 14:44:23.460564686 +0100 @@ -1,0 +2,10 @@ +Sun Dec 17 09:43:49 CET 2017 - lbeltr...@kde.org + +- Update to 5.41.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.41.0.php +- Changes since 5.40.0: + * Fix compile with QT_NO_CAST_FROM_ASCII + +------------------------------------------------------------------- Old: ---- kservice-5.40.0.tar.xz New: ---- kservice-5.41.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kservice.spec ++++++ --- /var/tmp/diff_new_pack.QgHIbh/_old 2018-01-09 14:44:24.260527173 +0100 +++ /var/tmp/diff_new_pack.QgHIbh/_new 2018-01-09 14:44:24.260527173 +0100 @@ -17,13 +17,13 @@ %bcond_without lang -%define _tar_path 5.40 +%define _tar_path 5.41 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %global _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} Name: kservice -Version: 5.40.0 +Version: 5.41.0 Release: 0 %define kf5_version %{version} BuildRequires: bison ++++++ kservice-5.40.0.tar.xz -> kservice-5.41.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/CMakeLists.txt new/kservice-5.41.0/CMakeLists.txt --- old/kservice-5.40.0/CMakeLists.txt 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/CMakeLists.txt 2017-12-02 21:08:04.000000000 +0100 @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.0) -set(KF5_VERSION "5.40.0") # handled by release scripts -set(KF5_DEP_VERSION "5.40.0") # handled by release scripts +set(KF5_VERSION "5.41.0") # handled by release scripts +set(KF5_DEP_VERSION "5.41.0") # handled by release scripts project(KService VERSION ${KF5_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.40.0 NO_MODULE) +find_package(ECM 5.41.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -34,9 +34,6 @@ set(APPLICATIONS_MENU_NAME applications.menu CACHE STRING "Name to install the applications.menu file as.") -# TODO: Remove these -remove_definitions(-DQT_NO_CAST_FROM_ASCII) - # Dependencies set(REQUIRED_QT_VERSION 5.7.0) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus Xml) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/po/zh_CN/kservice5.po new/kservice-5.41.0/po/zh_CN/kservice5.po --- old/kservice-5.40.0/po/zh_CN/kservice5.po 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/po/zh_CN/kservice5.po 2017-12-02 21:08:04.000000000 +0100 @@ -16,7 +16,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2017-02-07 08:40+0100\n" -"PO-Revision-Date: 2017-10-19 10:41-0400\n" +"PO-Revision-Date: 2017-11-09 08:33-0500\n" "Last-Translator: guoyunhebrave <guoyunhebr...@gmail.com>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kbuildmimetypefactory.cpp new/kservice-5.41.0/src/sycoca/kbuildmimetypefactory.cpp --- old/kservice-5.40.0/src/sycoca/kbuildmimetypefactory.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kbuildmimetypefactory.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -51,7 +51,7 @@ // file=text/plain.xml -> name=plain.xml dirName=text Q_ASSERT(!file.startsWith(QLatin1String("mime/"))); - const int pos = file.lastIndexOf('/'); + const int pos = file.lastIndexOf(QLatin1Char('/')); if (pos == -1) { // huh? return nullptr; } @@ -60,7 +60,7 @@ return nullptr; } - const int dot = file.lastIndexOf('.'); + const int dot = file.lastIndexOf(QLatin1Char('.')); if (dot == -1) { // huh? return nullptr; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kbuildservicefactory.cpp new/kservice-5.41.0/src/sycoca/kbuildservicefactory.cpp --- old/kservice-5.40.0/src/sycoca/kbuildservicefactory.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kbuildservicefactory.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -82,7 +82,7 @@ { Q_ASSERT(!file.startsWith(QLatin1String("kservices5/"))); // we add this ourselves, below - const QStringRef name = file.midRef(file.lastIndexOf('/') + 1); + const QStringRef name = file.midRef(file.lastIndexOf(QLatin1Char('/')) + 1); // Is it a .desktop file? if (name.endsWith(QLatin1String(".desktop"))) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kbuildservicegroupfactory.cpp new/kservice-5.41.0/src/sycoca/kbuildservicegroupfactory.cpp --- old/kservice-5.40.0/src/sycoca/kbuildservicegroupfactory.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kbuildservicegroupfactory.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -81,14 +81,14 @@ addEntry(KSycocaEntry::Ptr(entry)); - if (menuName != "/") { + if (menuName != QLatin1String("/")) { // Make sure parent dir exists. QString parent = menuName.left(menuName.length() - 1); - int i = parent.lastIndexOf('/'); + int i = parent.lastIndexOf(QLatin1Char('/')); if (i > 0) { parent = parent.left(i + 1); } else { - parent = '/'; + parent = QLatin1Char('/'); } KServiceGroup::Ptr parentEntry; @@ -110,7 +110,7 @@ void KBuildServiceGroupFactory::addNewChild(const QString &parent, const KSycocaEntry::Ptr &newEntry) { - QString name = "#parent#" + parent; + QString name = QStringLiteral("#parent#") + parent; KServiceGroup::Ptr entry; KSycocaEntry::Ptr ptr = m_entryDict->value(name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kbuildservicetypefactory.cpp new/kservice-5.41.0/src/sycoca/kbuildservicetypefactory.cpp --- old/kservice-5.40.0/src/sycoca/kbuildservicetypefactory.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kbuildservicetypefactory.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -52,7 +52,7 @@ KSycocaEntry *KBuildServiceTypeFactory::createEntry(const QString &file) const { QString name = file; - int pos = name.lastIndexOf('/'); + int pos = name.lastIndexOf(QLatin1Char('/')); if (pos != -1) { name = name.mid(pos + 1); } @@ -61,7 +61,7 @@ return nullptr; } - KDesktopFile desktopFile(QStandardPaths::GenericDataLocation, "kservicetypes5/" + file); + KDesktopFile desktopFile(QStandardPaths::GenericDataLocation, QStringLiteral("kservicetypes5/") + file); const KConfigGroup desktopGroup = desktopFile.desktopGroup(); if (desktopGroup.readEntry("Hidden", false) == true) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kbuildsycoca.cpp new/kservice-5.41.0/src/sycoca/kbuildsycoca.cpp --- old/kservice-5.40.0/src/sycoca/kbuildsycoca.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kbuildsycoca.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -245,7 +245,7 @@ } if (m_changed || !m_allEntries) { //qCDebug(SYCOCA) << "CHANGED:" << m_resource; - m_changedResources.append(m_resource); + m_changedResources.append(QString::fromLatin1(m_resource)); } } @@ -284,7 +284,7 @@ // Storing the mtime *after* looking at these dirs is a tiny race condition, // but I'm not sure how to get the vfolder dirs upfront... Q_FOREACH (QString dir, m_vfolder->allDirectories()) { - if (dir.endsWith('/')) { + if (dir.endsWith(QLatin1Char('/'))) { dir.chop(1); // remove trailing slash, to avoid having ~/.local/share/applications twice } if (!m_allResourceDirs.contains(dir)) { @@ -299,7 +299,7 @@ if (m_changed || !m_allEntries) { //qCDebug(SYCOCA) << "CHANGED:" << m_resource; - m_changedResources.append(m_resource); + m_changedResources.append(QString::fromLatin1(m_resource)); } if (m_menuTest) { result = false; @@ -315,7 +315,7 @@ QString caption = caption_; QString name = name_; foreach (VFolderMenu::SubMenu *subMenu, menu->subMenus) { - QString subName = name + subMenu->name + '/'; + QString subName = name + subMenu->name + QLatin1Char('/'); QString directoryFile = subMenu->directoryFile; if (directoryFile.isEmpty()) { @@ -347,14 +347,14 @@ entry = m_buildServiceGroupFactory->addNew(subName, subMenu->directoryFile, entry, subMenu->isDeleted); entry->setLayoutInfo(subMenu->layoutList); if (!(m_menuTest && entry->noDisplay())) { - createMenu(caption + entry->caption() + '/', subName, subMenu); + createMenu(caption + entry->caption() + QLatin1Char('/'), subName, subMenu); } } if (caption.isEmpty()) { - caption += '/'; + caption += QLatin1Char('/'); } if (name.isEmpty()) { - name += '/'; + name += QLatin1Char('/'); } foreach (const KService::Ptr &p, menu->items) { if (m_menuTest) { @@ -380,7 +380,7 @@ if (!lockFile.tryLock()) { qCDebug(SYCOCA) << "Waiting for already running" << KBUILDSYCOCA_EXENAME << "to finish."; if (!lockFile.lock()) { - qCWarning(SYCOCA) << "Couldn't lock" << path + ".lock"; + qCWarning(SYCOCA) << "Couldn't lock" << path + QStringLiteral(".lock"); return false; } if (!needsRebuild()) { @@ -450,8 +450,8 @@ //as $HOME may also be that of another user rather than /root #ifdef Q_OS_UNIX if (qEnvironmentVariableIsSet("SUDO_UID")) { - const int uid = QString(qgetenv("SUDO_UID")).toInt(); - const int gid = QString(qgetenv("SUDO_GID")).toInt(); + const int uid = qgetenv("SUDO_UID").toInt(); + const int gid = qgetenv("SUDO_GID").toInt(); if (uid && gid) { fchown(database.handle(), uid, gid); } @@ -648,7 +648,7 @@ const QString current_prefixes = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).join(QString(QLatin1Char(':'))); const KSycocaHeader header = KSycocaPrivate::self()->readSycocaHeader(); - Q_ASSERT(!header.prefixes.split(':').contains(QDir::homePath())); + Q_ASSERT(!header.prefixes.split(QLatin1Char(':')).contains(QDir::homePath())); return (current_update_sig == header.updateSignature) && (current_language == header.language) && diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kctimefactory.cpp new/kservice-5.41.0/src/sycoca/kctimefactory.cpp --- old/kservice-5.40.0/src/sycoca/kctimefactory.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kctimefactory.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -64,7 +64,7 @@ const Hash::const_iterator end = m_hash.constEnd(); for (; it != end; ++it) { const QString key = it.key(); - const QString res = key.left(key.indexOf('|')); + const QString res = key.left(key.indexOf(QLatin1Char('|'))); resources.insert(res); } return resources.toList(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/kmimeassociations.cpp new/kservice-5.41.0/src/sycoca/kmimeassociations.cpp --- old/kservice-5.40.0/src/sycoca/kmimeassociations.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/kmimeassociations.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -65,7 +65,7 @@ // collect existing files foreach (const QString &dir, mimeappsDirs) { foreach (const QString &file, mimeappsFileNames) { - const QString filePath = dir + '/' + file; + const QString filePath = dir + QLatin1Char('/') + file; if (QFile::exists(filePath)) { mimeappsFiles.append(filePath); } @@ -107,7 +107,7 @@ QMimeDatabase db; Q_FOREACH (const QString &mimeName, group.keyList()) { const QStringList services = group.readXdgListEntry(mimeName); - const QString resolvedMimeName = mimeName.startsWith("x-scheme-handler/") ? mimeName : db.mimeTypeForName(mimeName).name(); + const QString resolvedMimeName = mimeName.startsWith(QLatin1String("x-scheme-handler/")) ? mimeName : db.mimeTypeForName(mimeName).name(); if (resolvedMimeName.isEmpty()) { qCDebug(SYCOCA) << file << "specifies unknown mimeType" << mimeName << "in" << group.name(); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/ksycoca.cpp new/kservice-5.41.0/src/sycoca/ksycoca.cpp --- old/kservice-5.40.0/src/sycoca/ksycoca.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/ksycoca.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -510,7 +510,7 @@ if (openDatabase(ifNotFound & IfNotFoundOpenDummy)) { // Database exists, and version is ok, we can read it. - if (qAppName() != KBUILDSYCOCA_EXENAME && ifNotFound != IfNotFoundDoNothing) { + if (qAppName() != QString::fromLatin1(KBUILDSYCOCA_EXENAME) && ifNotFound != IfNotFoundDoNothing) { // Ensure it's uptodate, rebuild if needed checkDirectories(); @@ -734,11 +734,11 @@ const QByteArray ksycoca_env = qgetenv("KDESYCOCA"); if (ksycoca_env.isEmpty()) { - const QByteArray pathHash = QCryptographicHash::hash(paths.join(QString(QLatin1Char(':'))).toUtf8(), QCryptographicHash::Sha1); + const QByteArray pathHash = QCryptographicHash::hash(paths.join(QLatin1Char(':')).toUtf8(), QCryptographicHash::Sha1); suffix += QLatin1Char('_') + QString::fromLatin1(pathHash.toBase64()); - suffix.replace('/', '_'); + suffix.replace(QLatin1Char('/'), QLatin1Char('_')); #ifdef Q_OS_WIN - suffix.replace(':', '_'); + suffix.replace(QLatin1Char(':'), QLatin1Char('_')); #endif const QString fileName = QStringLiteral("ksycoca5") + suffix; return QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1Char('/') + fileName; @@ -771,7 +771,7 @@ return; } sycoca->d->readError = true; - if (qAppName() != KBUILDSYCOCA_EXENAME && !sycoca->isBuilding()) { + if (qAppName() != QString::fromLatin1(KBUILDSYCOCA_EXENAME) && !sycoca->isBuilding()) { // Rebuild the damned thing. KBuildSycoca builder; (void)builder.recreate(); @@ -816,7 +816,7 @@ void KSycoca::ensureCacheValid() { - if (qAppName() == KBUILDSYCOCA_EXENAME) { + if (qAppName() == QString::fromLatin1(KBUILDSYCOCA_EXENAME)) { return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kservice-5.40.0/src/sycoca/vfolder_menu.cpp new/kservice-5.41.0/src/sycoca/vfolder_menu.cpp --- old/kservice-5.40.0/src/sycoca/vfolder_menu.cpp 2017-11-05 09:38:27.000000000 +0100 +++ new/kservice-5.41.0/src/sycoca/vfolder_menu.cpp 2017-12-02 21:08:04.000000000 +0100 @@ -64,7 +64,7 @@ void VFolderMenu::registerFile(const QString &file) { - int i = file.lastIndexOf('/'); + int i = file.lastIndexOf(QLatin1Char('/')); if (i < 0) { return; } @@ -141,7 +141,7 @@ VFolderMenu::SubMenu * VFolderMenu::takeSubMenu(SubMenu *parentMenu, const QString &menuName) { - const int i = menuName.indexOf('/'); + const int i = menuName.indexOf(QLatin1Char('/')); const QString s1 = i > 0 ? menuName.left(i) : menuName; const QString s2 = menuName.mid(i + 1); @@ -221,7 +221,7 @@ void VFolderMenu::insertSubMenu(SubMenu *parentMenu, const QString &menuName, SubMenu *newMenu, bool reversePriority) { - const int i = menuName.indexOf('/'); + const int i = menuName.indexOf(QLatin1Char('/')); const QString s1 = menuName.left(i); const QString s2 = menuName.mid(i + 1); @@ -252,7 +252,7 @@ void VFolderMenu::insertService(SubMenu *parentMenu, const QString &name, KService::Ptr newService) { - const int i = name.indexOf('/'); + const int i = name.indexOf(QLatin1Char('/')); if (i == -1) { // Add it here @@ -421,8 +421,8 @@ } } - if (!dir.endsWith('/')) { - dir += '/'; + if (!dir.endsWith(QLatin1Char('/'))) { + dir += QLatin1Char('/'); } return dir; @@ -497,7 +497,7 @@ // Skip } // The spec says we must ignore any Name nodes - else if (e.tagName() != "Name") { + else if (e.tagName() != QLatin1String("Name")) { parent.insertAfter(n, last); last = n; } @@ -601,7 +601,7 @@ continue; } else if (e.tagName() == QLatin1String("MergeDir")) { QString dir = absoluteDir(e.text(), e.attribute(QStringLiteral("__BaseDir")), true); - Q_ASSERT(dir.endsWith('/')); + Q_ASSERT(dir.endsWith(QLatin1Char('/'))); const bool relative = QDir::isRelativePath(dir); const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("menus/") + dir, QStandardPaths::LocateDirectory); @@ -686,7 +686,7 @@ return; } int i; - i = baseName.lastIndexOf('/'); + i = baseName.lastIndexOf(QLatin1Char('/')); if (i > 0) { m_docInfo.baseDir = baseName.left(i + 1); m_docInfo.baseName = baseName.mid(i + 1, baseName.length() - i - 6); @@ -703,7 +703,7 @@ m_docInfo.baseDir = baseDir; - QString fileName = basePath.mid(basePath.lastIndexOf('/') + 1); + QString fileName = basePath.mid(basePath.lastIndexOf(QLatin1Char('/')) + 1); m_docInfo.baseName = fileName.left(fileName.length() - 5); // without ".menu" QString baseName = QDir::cleanPath(m_docInfo.baseDir + fileName); @@ -750,7 +750,7 @@ } QString baseName = QDir::cleanPath(m_docInfo.baseDir + - fileInfo.path() + '/' + fileNameOnly); + fileInfo.path() + QLatin1Char('/') + fileNameOnly); result = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, QStringLiteral("menus/") + baseName); } @@ -935,7 +935,7 @@ if (fn == QLatin1String(".") || fn == QLatin1String("..")) { continue; } - loadApplications(fi.filePath(), prefix + fn + '-'); + loadApplications(fi.filePath(), prefix + fn + QLatin1Char('-')); continue; } if (fi.isFile()) { @@ -973,7 +973,7 @@ parentMenu->subMenus.append(m_currentMenu); - processLegacyDir(fi.filePath(), relDir + fn + '/', prefix); + processLegacyDir(fi.filePath(), relDir + fn + QLatin1Char('/'), prefix); m_currentMenu = parentMenu; continue; } @@ -1248,9 +1248,9 @@ if (e.hasAttribute(SHOW_EMPTY)) { QString str = e.attribute(SHOW_EMPTY); if (str == QLatin1String("true")) { - option = "ME "; + option = QStringLiteral("ME "); } else if (str == QLatin1String("false")) { - option = "NME "; + option = QStringLiteral("NME "); } else { //qCDebug(SYCOCA)<<" Error in parsing show_empty attribute :"<<str; } @@ -1259,9 +1259,9 @@ if (e.hasAttribute(INLINE)) { QString str = e.attribute(INLINE); if (str == QLatin1String("true")) { - option += "I "; + option += QStringLiteral("I "); } else if (str == QLatin1String("false")) { - option += "NI "; + option += QStringLiteral("NI "); } else { qCDebug(SYCOCA) << " Error in parsing inline attribute :" << str; } @@ -1287,9 +1287,9 @@ if (e.hasAttribute(QStringLiteral("inline_alias")) && e.attribute(QStringLiteral("inline_alias")) == QLatin1String("true")) { QString str = e.attribute(QStringLiteral("inline_alias")); if (str == QLatin1String("true")) { - option += "IA"; + option += QStringLiteral("IA"); } else if (str == QLatin1String("false")) { - option += "NIA"; + option += QStringLiteral("NIA"); } else { qCDebug(SYCOCA) << " Error in parsing inline_alias attribute :" << str; } @@ -1322,7 +1322,7 @@ } else if (e.tagName() == QLatin1String("Filename")) { layout.append(e.text()); } else if (e.tagName() == QLatin1String("Menuname")) { - layout.append('/' + e.text()); + layout.append(QLatin1Char('/') + e.text()); QString option = parseAttribute(e); if (!option.isEmpty()) { layout.append(option);