summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-16 16:23:13 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-16 16:23:13 +0100
commit9a816664b1eafdce52fab9e2d5ec535fc28a782c (patch)
treeb9758c3e78f44901bc469eca4ac4c86de96cf8e2 /src
parenta637203b75706843d6a36e747ddeb2d1cce32a48 (diff)
parente14f2d2c85c92fc7ecd4b9032632ffa7bcfbc7ab (diff)
Merge remote-tracking branch 'origin/stable' into dev
Diffstat (limited to 'src')
-rw-r--r--src/assistant/assistant/helpviewer.cpp2
-rw-r--r--src/assistant/help/qhelpprojectdata.cpp13
-rw-r--r--src/designer/src/lib/shared/pluginmanager.cpp8
-rw-r--r--src/linguist/lupdate/cpp.cpp6
-rw-r--r--src/windeployqt/main.cpp80
-rw-r--r--src/windeployqt/qmlutils.cpp20
-rw-r--r--src/windeployqt/qmlutils.h1
7 files changed, 86 insertions, 44 deletions
diff --git a/src/assistant/assistant/helpviewer.cpp b/src/assistant/assistant/helpviewer.cpp
index 13c76cbb3..2a1b615af 100644
--- a/src/assistant/assistant/helpviewer.cpp
+++ b/src/assistant/assistant/helpviewer.cpp
@@ -171,7 +171,7 @@ bool HelpViewer::launchWithExternalApp(const QUrl &url)
actualTmpFile.close();
return QDesktopServices::openUrl(QUrl(actualTmpFile.fileName()));
}
- } else if (url.scheme() == QLatin1String("http")) {
+ } else if (url.scheme() == QLatin1String("http") || url.scheme() == QLatin1String("mailto")) {
return QDesktopServices::openUrl(url);
}
return false;
diff --git a/src/assistant/help/qhelpprojectdata.cpp b/src/assistant/help/qhelpprojectdata.cpp
index ee86f78a5..feb42ab85 100644
--- a/src/assistant/help/qhelpprojectdata.cpp
+++ b/src/assistant/help/qhelpprojectdata.cpp
@@ -60,9 +60,9 @@ public:
QString virtualFolder;
QString namespaceName;
+ QString fileName;
QString rootPath;
- QStringList fileList;
QList<QHelpDataCustomFilter> customFilterList;
QList<QHelpDataFilterSection> filterSectionList;
QMap<QString, QVariant> metaData;
@@ -85,7 +85,7 @@ private:
void QHelpProjectDataPrivate::raiseUnknownTokenError()
{
- raiseError(QCoreApplication::translate("QHelpProject", "Unknown token."));
+ raiseError(QCoreApplication::translate("QHelpProject", "Unknown token in file \"%1\".").arg(fileName));
}
void QHelpProjectDataPrivate::readData(const QByteArray &contents)
@@ -119,12 +119,12 @@ void QHelpProjectDataPrivate::readProject()
virtualFolder = readElementText();
if (!hasValidSyntax(QLatin1String("test"), virtualFolder))
raiseError(QCoreApplication::translate("QHelpProject",
- "Virtual folder has invalid syntax."));
+ "Virtual folder has invalid syntax in file: \"%1\"").arg(fileName));
} else if (name() == QLatin1String("namespace")) {
namespaceName = readElementText();
if (!hasValidSyntax(namespaceName, QLatin1String("test")))
raiseError(QCoreApplication::translate("QHelpProject",
- "Namespace has invalid syntax."));
+ "Namespace \"%1\" has invalid syntax in file: \"%2\"").arg(namespaceName, fileName));
} else if (name() == QLatin1String("customFilter")) {
readCustomFilter();
} else if (name() == QLatin1String("filterSection")) {
@@ -143,10 +143,10 @@ void QHelpProjectDataPrivate::readProject()
} else if (isEndElement() && name() == QLatin1String("QtHelpProject")) {
if (namespaceName.isEmpty())
raiseError(QCoreApplication::translate("QHelpProject",
- "Missing namespace in QtHelpProject."));
+ "Missing namespace in QtHelpProject file: \"%1\"").arg(fileName));
else if (virtualFolder.isEmpty())
raiseError(QCoreApplication::translate("QHelpProject",
- "Missing virtual folder in QtHelpProject"));
+ "Missing virtual folder in QtHelpProject file: \"%1\"").arg(fileName));
break;
}
}
@@ -374,6 +374,7 @@ QHelpProjectData::~QHelpProjectData()
*/
bool QHelpProjectData::readData(const QString &fileName)
{
+ d->fileName = fileName;
d->rootPath = QFileInfo(fileName).absolutePath();
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
diff --git a/src/designer/src/lib/shared/pluginmanager.cpp b/src/designer/src/lib/shared/pluginmanager.cpp
index 5b31f848c..7e57379db 100644
--- a/src/designer/src/lib/shared/pluginmanager.cpp
+++ b/src/designer/src/lib/shared/pluginmanager.cpp
@@ -698,6 +698,14 @@ void QDesignerPluginManager::registerPlugin(const QString &plugin)
if (m_d->m_registeredPlugins.contains(plugin))
return;
+ // ###fixme: Temporary workaround for QTCREATORBUG-10273
+ if (QCoreApplication::applicationName() == QLatin1String("QtCreator")
+ && plugin.contains(QLatin1String("declarativeview"), Qt::CaseInsensitive)) {
+ const QString errorMessage = tr("Not loaded due to potential symbol clashes (QTCREATORBUG-10273)");
+ m_d->m_failedPlugins.insert(plugin, errorMessage);
+ return;
+ }
+
QPluginLoader loader(plugin);
if (loader.isLoaded() || loader.load()) {
m_d->m_registeredPlugins += plugin;
diff --git a/src/linguist/lupdate/cpp.cpp b/src/linguist/lupdate/cpp.cpp
index 5371cfc73..b282e8f57 100644
--- a/src/linguist/lupdate/cpp.cpp
+++ b/src/linguist/lupdate/cpp.cpp
@@ -239,7 +239,7 @@ private:
std::ostream &yyMsg(int line = 0);
- uint getChar();
+ int getChar();
uint getToken();
bool getMacroArgs();
@@ -417,7 +417,7 @@ void CppParser::setInput(QTextStream &ts, const QString &fileName)
The 0 doesn't produce any token.
*/
-uint CppParser::getChar()
+int CppParser::getChar()
{
const ushort *uc = yyInPtr;
forever {
@@ -455,7 +455,7 @@ uint CppParser::getChar()
yyAtNewline = false;
}
yyInPtr = uc;
- return c;
+ return int(c);
}
}
diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp
index 2ce6fcd49..dc57f340b 100644
--- a/src/windeployqt/main.cpp
+++ b/src/windeployqt/main.cpp
@@ -69,30 +69,31 @@ enum QtModule
QtDesignerComponents = 0x20,
QtDesignerModule = 0x40,
QtGuiModule = 0x80,
- QtHelpModule = 0x100,
- QtMultimediaModule = 0x200,
- QtMultimediaWidgetsModule = 0x400,
- QtNetworkModule = 0x800,
- QtNfcModule = 0x1000,
- QtOpenGLModule = 0x2000,
- QtPositioningModule = 0x4000,
- QtPrintSupportModule = 0x8000,
- QtQmlModule = 0x10000,
- QtQuickModule = 0x20000,
- QtQuickParticlesModule = 0x40000,
- QtScriptModule = 0x80000,
- QtScriptToolsModule = 0x100000,
- QtSensorsModule = 0x200000,
- QtSerialPortModule = 0x400000,
- QtSqlModule = 0x800000,
- QtSvgModule = 0x1000000,
- QtTestModule = 0x2000000,
- QtWidgetsModule = 0x4000000,
- QtWinExtrasModule = 0x8000000,
- QtXmlModule = 0x10000000,
- QtXmlPatternsModule = 0x20000000,
- QtWebKitModule = 0x40000000,
- QtWebKitWidgetsModule = 0x80000000
+ QtCluceneModule = 0x100,
+ QtHelpModule = 0x200,
+ QtMultimediaModule = 0x400,
+ QtMultimediaWidgetsModule = 0x800,
+ QtNetworkModule = 0x1000,
+ QtNfcModule = 0x2000,
+ QtOpenGLModule = 0x4000,
+ QtPositioningModule = 0x8000,
+ QtPrintSupportModule = 0x10000,
+ QtQmlModule = 0x20000,
+ QtQuickModule = 0x40000,
+ QtQuickParticlesModule = 0x80000,
+ QtScriptModule = 0x100000,
+ QtScriptToolsModule = 0x200000,
+ QtSensorsModule = 0x400000,
+ QtSerialPortModule = 0x800000,
+ QtSqlModule = 0x1000000,
+ QtSvgModule = 0x2000000,
+ QtTestModule = 0x4000000,
+ QtWidgetsModule = 0x8000000,
+ QtWinExtrasModule = 0x10000000,
+ QtXmlModule = 0x20000000,
+ QtXmlPatternsModule = 0x40000000,
+ QtWebKitModule = 0x80000000,
+ QtWebKitWidgetsModule = 0x100000000
};
struct QtModuleEntry {
@@ -111,7 +112,8 @@ QtModuleEntry qtModuleEntries[] = {
{ QtDesignerComponents, "designercomponents", "Qt5DesignerComponents", 0 },
{ QtDesignerModule, "designer", "Qt5Designer", 0 },
{ QtGuiModule, "gui", "Qt5Gui", "qtbase" },
- { QtHelpModule, "help", "Qt5Help", "qt_help" },
+ { QtCluceneModule, "clucene", "Qt5CLucene", 0 },
+ { QtHelpModule, "qthelp", "Qt5Help", "qt_help" },
{ QtMultimediaModule, "multimedia", "Qt5Multimedia", "qtmultimedia" },
{ QtMultimediaWidgetsModule, "multimediawidgets", "Qt5MultimediaWidgets", "qtmultimedia" },
{ QtNetworkModule, "network", "Qt5Network", "qtbase" },
@@ -192,7 +194,7 @@ struct Options {
unsigned additionalLibraries;
unsigned disabledLibraries;
unsigned updateFileFlags;
- QString qmlDirectory; // Project's QML files.
+ QStringList qmlDirectories; // Project's QML files.
QString directory;
QString libraryDirectory;
QString binary;
@@ -325,6 +327,14 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse
options->disabledLibraries |= disabledModules.at(int(i)).second;
}
+ // Add some dependencies
+ if (options->additionalLibraries & QtQuickModule)
+ options->additionalLibraries |= QtQmlModule;
+ if (options->additionalLibraries & QtHelpModule)
+ options->additionalLibraries |= QtCLuceneModule;
+ if (options->additionalLibraries & QtDesignerComponents)
+ options->additionalLibraries |= QtDesignerModule;
+
if (parser->isSet(jsonOption)) {
optVerboseLevel = 0;
options->json = new JsonOutput;
@@ -356,7 +366,7 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse
options->directory = parser->value(dirOption);
if (parser->isSet(qmlDirOption))
- options->qmlDirectory = parser->value(qmlDirOption);
+ options->qmlDirectories = parser->values(qmlDirOption);
const QString &file = posArgs.front();
const QFileInfo fi(QDir::cleanPath(file));
@@ -716,11 +726,19 @@ static DeployResult deploy(const Options &options,
// Scan Quick2 imports
QmlImportScanResult qmlScanResult;
if (options.quickImports && usesQml2) {
- const QString qmlDirectory = options.qmlDirectory.isEmpty() ? findQmlDirectory(options.platform, options.directory) : options.qmlDirectory;
- if (!qmlDirectory.isEmpty()) {
- qmlScanResult = runQmlImportScanner(qmlDirectory, qmakeVariables.value(QStringLiteral("QT_INSTALL_QML")), options.platform, isDebug, errorMessage);
- if (!qmlScanResult.ok)
+ QStringList qmlDirectories = options.qmlDirectories;
+ if (qmlDirectories.isEmpty()) {
+ const QString qmlDirectory = findQmlDirectory(options.platform, options.directory);
+ if (!qmlDirectory.isEmpty())
+ qmlDirectories.append(qmlDirectory);
+ }
+ foreach (const QString &qmlDirectory, qmlDirectories) {
+ if (optVerboseLevel >= 1)
+ std::printf("Scanning %s:\n", qPrintable(QDir::toNativeSeparators(qmlDirectory)));
+ const QmlImportScanResult scanResult = runQmlImportScanner(qmlDirectory, qmakeVariables.value(QStringLiteral("QT_INSTALL_QML")), options.platform, isDebug, errorMessage);
+ if (!scanResult.ok)
return result;
+ qmlScanResult.append(scanResult);
// Additional dependencies of QML plugins.
foreach (const QString &plugin, qmlScanResult.plugins) {
if (!findDependentQtLibraries(libraryLocation, plugin, options.platform, errorMessage, &dependentQtLibs, &wordSize, &isDebug))
diff --git a/src/windeployqt/qmlutils.cpp b/src/windeployqt/qmlutils.cpp
index c2593cd35..8e16a9526 100644
--- a/src/windeployqt/qmlutils.cpp
+++ b/src/windeployqt/qmlutils.cpp
@@ -97,7 +97,7 @@ QmlImportScanResult runQmlImportScanner(const QString &directory, const QString
QByteArray stdOut;
QByteArray stdErr;
const QString binary = QStringLiteral("qmlimportscanner");
- if (!runProcess(binary, arguments, directory, &exitCode, &stdOut, &stdErr, errorMessage))
+ if (!runProcess(binary, arguments, QDir::currentPath(), &exitCode, &stdOut, &stdErr, errorMessage))
return result;
if (exitCode) {
*errorMessage = binary + QStringLiteral(" returned ") + QString::number(exitCode)
@@ -118,12 +118,26 @@ QmlImportScanResult runQmlImportScanner(const QString &directory, const QString
const QJsonObject object = array.at(c).toObject();
if (object.value(QStringLiteral("type")).toString() == QLatin1String("module")) {
const QString path = object.value(QStringLiteral("path")).toString();
- result.modulesDirectories.append(path);
- findFileRecursion(QDir(path), Platform(platform), debug, &result.plugins);
+ if (!path.isEmpty()) {
+ result.modulesDirectories.append(path);
+ findFileRecursion(QDir(path), Platform(platform), debug, &result.plugins);
+ }
}
}
result.ok = true;
return result;
}
+void QmlImportScanResult::append(const QmlImportScanResult &other)
+{
+ foreach (const QString &module, other.modulesDirectories) {
+ if (!modulesDirectories.contains(module))
+ modulesDirectories.append(module);
+ }
+ foreach (const QString &plugin, other.plugins) {
+ if (!plugin.contains(plugin))
+ plugins.append(plugin);
+ }
+}
+
QT_END_NAMESPACE
diff --git a/src/windeployqt/qmlutils.h b/src/windeployqt/qmlutils.h
index 0d7c6cc74..ea8c7747d 100644
--- a/src/windeployqt/qmlutils.h
+++ b/src/windeployqt/qmlutils.h
@@ -50,6 +50,7 @@ QString findQmlDirectory(int platform, const QString &startDirectoryName);
struct QmlImportScanResult {
QmlImportScanResult() : ok(false) {}
+ void append(const QmlImportScanResult &other);
bool ok;
QStringList modulesDirectories;