diff options
author | con <qtc-committer@nokia.com> | 2011-04-27 11:27:29 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2011-04-27 11:27:29 +0200 |
commit | 14487af86cb49428baea00d1426b25a109885b8e (patch) | |
tree | d0236c4fe3f5d35027f7bb59b0c634e6fd2a66ce /src | |
parent | 80ef07dce3bc3af76b988875378d38be3588c912 (diff) | |
parent | a130ebf4131f13c30206d01731c62c4f530a3e69 (diff) | |
download | qt-creator-14487af86cb49428baea00d1426b25a109885b8e.tar.gz |
Merge remote branch 'origin/2.2'
Conflicts:
src/plugins/projectexplorer/gcctoolchain.cpp
src/plugins/projectexplorer/target.cpp
src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/utils/abstractprocess_win.cpp | 5 | ||||
-rw-r--r-- | src/libs/utils/winutils.cpp | 13 | ||||
-rw-r--r-- | src/libs/utils/winutils.h | 3 | ||||
-rw-r--r-- | src/plugins/debugger/commonoptionspage.cpp | 24 | ||||
-rw-r--r-- | src/plugins/debugger/debuggeractions.cpp | 14 | ||||
-rw-r--r-- | src/plugins/debugger/debuggeractions.h | 2 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 9 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerrunner.cpp | 7 | ||||
-rw-r--r-- | src/plugins/debugger/dumperoptionpage.ui | 25 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlcppengine.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlengine.cpp | 6 | ||||
-rw-r--r-- | src/plugins/projectexplorer/applicationlauncher_win.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp | 9 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp | 15 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qmakestep.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/basetexteditor.cpp | 1 |
18 files changed, 51 insertions, 97 deletions
diff --git a/src/libs/utils/abstractprocess_win.cpp b/src/libs/utils/abstractprocess_win.cpp index 194c67e222..4bc7c08952 100644 --- a/src/libs/utils/abstractprocess_win.cpp +++ b/src/libs/utils/abstractprocess_win.cpp @@ -81,7 +81,10 @@ static QString quoteWinArgument(const QString &arg) // The argument must not end with a \ since this would be interpreted // as escaping the quote -- rather put the \ behind the quote: e.g. // rather use "foo"\ than "foo\" - ret.replace(QRegExp(QLatin1String("(\\\\*)$")), QLatin1String("\"\\1")); + int i = ret.length(); + while (i > 0 && ret.at(i - 1) == QLatin1Char('\\')) + --i; + ret.insert(i, QLatin1Char('"')); ret.prepend(QLatin1Char('"')); } return ret; diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp index 7ed6909f2f..f19bdfefbe 100644 --- a/src/libs/utils/winutils.cpp +++ b/src/libs/utils/winutils.cpp @@ -163,6 +163,19 @@ QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name) return rc; } +// makes sure that capitalization of directories is canonical. +// This mimics the logic in QDeclarative_isFileCaseCorrect +QTCREATOR_UTILS_EXPORT QString normalizePathName(const QString &name) +{ + QString canonicalName = getShortPathName(name); + if (canonicalName.isEmpty()) + return name; + canonicalName = getLongPathName(canonicalName); + if (canonicalName.isEmpty()) + return name; + return canonicalName; +} + QTCREATOR_UTILS_EXPORT unsigned long winQPidToPid(const Q_PID qpid) { const PROCESS_INFORMATION *processInfo = reinterpret_cast<const PROCESS_INFORMATION*>(qpid); diff --git a/src/libs/utils/winutils.h b/src/libs/utils/winutils.h index 92ca1f1578..caf9f9476a 100644 --- a/src/libs/utils/winutils.h +++ b/src/libs/utils/winutils.h @@ -59,6 +59,9 @@ QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name); // Returns long name QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name); +// Returns long name with canonical capitalization. +QTCREATOR_UTILS_EXPORT QString normalizePathName(const QString &name); + QTCREATOR_UTILS_EXPORT unsigned long winQPidToPid(const Q_PID qpid); QTCREATOR_UTILS_EXPORT bool winIs64BitSystem(); diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index 829b960854..603eef40c5 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -217,12 +217,6 @@ bool CommonOptionsPage::matches(const QString &s) const // /////////////////////////////////////////////////////////////////////// -static bool oxygenStyle() -{ - const ManhattanStyle *ms = qobject_cast<const ManhattanStyle *>(qApp->style()); - return ms && !qstrcmp("OxygenStyle", ms->baseStyle()->metaObject()->className()); -} - QString DebuggingHelperOptionPage::id() const { return _("Z.DebuggingHelper"); @@ -263,28 +257,16 @@ QWidget *DebuggingHelperOptionPage::createPage(QWidget *parent) QWidget *w = new QWidget(parent); m_ui.setupUi(w); - m_ui.dumperLocationChooser->setExpectedKind(Utils::PathChooser::Command); - m_ui.dumperLocationChooser->setPromptDialogTitle(QCoreApplication::translate - ("Debugger", "Choose DebuggingHelper Location")); - m_ui.dumperLocationChooser->setInitialBrowsePathBackup( - ICore::instance()->resourcePath() + "../../lib"); - m_group.clear(); DebuggerCore *dc = debuggerCore(); m_group.insert(dc->action(UseDebuggingHelpers), m_ui.debuggingHelperGroupBox); - m_group.insert(dc->action(UseCustomDebuggingHelperLocation), - m_ui.customLocationGroupBox); - // Suppress Oxygen style's giving flat group boxes bold titles. - if (oxygenStyle()) - m_ui.customLocationGroupBox->setStyleSheet(_("QGroupBox::title { font: ; }")); - - m_group.insert(dc->action(CustomDebuggingHelperLocation), - m_ui.dumperLocationChooser); m_group.insert(dc->action(UseCodeModel), m_ui.checkBoxUseCodeModel); + m_ui.checkBoxUseCodeModel->setToolTip(dc->action(UseCodeModel)->toolTip()); + m_group.insert(dc->action(ShowThreadNames), m_ui.checkBoxShowThreadNames); @@ -302,8 +284,6 @@ QWidget *DebuggingHelperOptionPage::createPage(QWidget *parent) if (m_searchKeywords.isEmpty()) { QTextStream(&m_searchKeywords) << ' ' << m_ui.debuggingHelperGroupBox->title() - << ' ' << m_ui.customLocationGroupBox->title() - << ' ' << m_ui.dumperLocationLabel->text() << ' ' << m_ui.checkBoxUseCodeModel->text() << ' ' << m_ui.checkBoxShowThreadNames->text(); m_searchKeywords.remove(QLatin1Char('&')); diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index f10cbb393f..134434dacb 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -266,20 +266,6 @@ DebuggerSettings::DebuggerSettings(QSettings *settings) insertItem(UseDebuggingHelpers, item); item = new SavedAction(this); - item->setSettingsKey(debugModeGroup, QLatin1String("UseCustomDebuggingHelperLocation")); - item->setCheckable(true); - item->setDefaultValue(false); - item->setValue(false); - insertItem(UseCustomDebuggingHelperLocation, item); - - item = new SavedAction(this); - item->setSettingsKey(debugModeGroup, QLatin1String("CustomDebuggingHelperLocation")); - item->setCheckable(true); - item->setDefaultValue(QString()); - item->setValue(QString()); - insertItem(CustomDebuggingHelperLocation, item); - - item = new SavedAction(this); item->setSettingsKey(debugModeGroup, QLatin1String("UseCodeModel")); item->setText(tr("Use Code Model")); item->setToolTip(tr("Selecting this causes the C++ Code Model being asked " diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h index c59e22939c..c3f5ae65f9 100644 --- a/src/plugins/debugger/debuggeractions.h +++ b/src/plugins/debugger/debuggeractions.h @@ -101,8 +101,6 @@ enum DebuggerActionCode SwitchModeOnExit, UseDebuggingHelpers, - UseCustomDebuggingHelperLocation, - CustomDebuggingHelperLocation, UseCodeModel, ShowThreadNames, diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index bccd97939a..50f7de2a62 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -633,13 +633,6 @@ bool DebuggerEngine::qtDumperLibraryEnabled() const QStringList DebuggerEngine::qtDumperLibraryLocations() const { - if (debuggerCore()->action(UseCustomDebuggingHelperLocation)->value().toBool()) { - const QString customLocation = - debuggerCore()->action(CustomDebuggingHelperLocation)->value().toString(); - const QString location = - tr("%1 (explicitly set in the Debugger Options)").arg(customLocation); - return QStringList(location); - } return d->m_startParameters.dumperLibraryLocations; } @@ -650,8 +643,6 @@ void DebuggerEngine::showQtDumperLibraryWarning(const QString &details) QString DebuggerEngine::qtDumperLibraryName() const { - if (debuggerCore()->action(UseCustomDebuggingHelperLocation)->value().toBool()) - return debuggerCore()->action(CustomDebuggingHelperLocation)->value().toString(); return startParameters().dumperLibrary; } diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index ecce430af0..6ea4763db3 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -47,6 +47,7 @@ #ifdef Q_OS_WIN # include "peutils.h" +# include <utils/winutils.h> #endif #include <projectexplorer/abi.h> @@ -686,6 +687,12 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu sp.startMode = StartInternal; sp.environment = rc->environment(); sp.workingDirectory = rc->workingDirectory(); + +#if defined(Q_OS_WIN) + // Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...) + sp.workingDirectory = Utils::normalizePathName(sp.workingDirectory); +#endif + sp.executable = rc->executable(); sp.processArgs = rc->commandLineArguments(); sp.toolChainAbi = rc->abi(); diff --git a/src/plugins/debugger/dumperoptionpage.ui b/src/plugins/debugger/dumperoptionpage.ui index 3dcf247816..ff71eb9f69 100644 --- a/src/plugins/debugger/dumperoptionpage.ui +++ b/src/plugins/debugger/dumperoptionpage.ui @@ -51,31 +51,6 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QGroupBox" name="customLocationGroupBox"> - <property name="title"> - <string>Use debugging helper from custom location</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="dumperLocationLabel"> - <property name="text"> - <string>Location: </string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="Utils::PathChooser" name="dumperLocationChooser" native="true"/> - </item> - </layout> - </widget> - </item> - <item> <widget class="QCheckBox" name="checkBoxUseCodeModel"> <property name="toolTip"> <string>Makes use of Qt Creator's code model to find out if a variable has already been assigned a value at the point the debugger interrupts.</string> diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 888a0b47d2..f0d9826a83 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -668,7 +668,7 @@ void QmlCppEngine::handleRemoteSetupFailed(const QString &message) void QmlCppEngine::showMessage(const QString &msg, int channel, int timeout) const { - if (channel == AppOutput || channel == AppError) { + if (channel == AppOutput || channel == AppError || channel == AppStuff) { // message is from CppEngine, allow qml engine to process d->m_qmlEngine->filterApplicationMessage(msg, channel); } diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index c3f6d377ba..8a4e680b0a 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -1048,7 +1048,11 @@ QString QmlEngine::mangleFilenamePaths(const QString &filename, QFileInfo fileInfo(filename); if (oldBaseDir.exists() && newBaseDir.exists() && fileInfo.exists()) { - if (fileInfo.absoluteFilePath().startsWith(oldBaseDir.canonicalPath())) { + Qt::CaseSensitivity caseSensitive = Qt::CaseSensitive; +#ifdef Q_OS_WIN + caseSensitive = Qt::CaseInsensitive; +#endif + if (fileInfo.absoluteFilePath().startsWith(oldBaseDir.canonicalPath(), caseSensitive)) { QString fileRelativePath = fileInfo.canonicalFilePath().mid(oldBaseDir.canonicalPath().length()); QFileInfo projectFile(newBaseDir.canonicalPath() + QLatin1Char('/') + fileRelativePath); diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp index 7c9364308b..2576d35235 100644 --- a/src/plugins/projectexplorer/applicationlauncher_win.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp @@ -71,10 +71,7 @@ ApplicationLauncher::~ApplicationLauncher() void ApplicationLauncher::setWorkingDirectory(const QString &dir) { // Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...) - QString fixedPath = dir; - const QString longPath = Utils::getLongPathName(dir); - if (!longPath.isEmpty()) - fixedPath = longPath; + const QString fixedPath = Utils::normalizePathName(dir); d->m_winGuiProcess.setWorkingDirectory(fixedPath); d->m_consoleProcess.setWorkingDirectory(fixedPath); diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index c1b87cc94a..35f81dc8b0 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -505,8 +505,6 @@ bool Target::fromMap(const QVariantMap &map) if (i == activeConfiguration) setActiveDeployConfiguration(dc); } - if (deployConfigurations().isEmpty() && d->deployFactories().isEmpty()) - return false; int rcCount = map.value(QLatin1String(RC_COUNT_KEY), 0).toInt(&ok); if (!ok || rcCount < 0) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 43849c096d..3d256b697a 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -865,6 +865,11 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand return InformationChangedCommand(informationVector); } +static bool supportedVariantType(QVariant::Type type) +{ + return type < QVariant::UserType && type != QVariant::Icon; +} + ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList<ServerNodeInstance> &instanceList) const { QVector<PropertyValueContainer> valueVector; @@ -872,7 +877,7 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList< foreach(const ServerNodeInstance &instance, instanceList) { foreach(const QString &propertyName, instance.propertyNames()) { QVariant propertyValue = instance.property(propertyName); - if (propertyValue.type() < QVariant::UserType) + if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); } } @@ -901,7 +906,7 @@ ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QVecto if( instance.isValid()) { QVariant propertyValue = instance.property(propertyName); - if (propertyValue.type() < QVariant::UserType) + if (supportedVariantType(propertyValue.type())) valueVector.append(PropertyValueContainer(instance.instanceId(), propertyName, propertyValue, QString())); } } diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 6f7da331ce..63150230e4 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -45,7 +45,7 @@ #include <qt4projectmanager/qtoutputformatter.h> #include <qt4projectmanager/qt4projectmanagerconstants.h> -#ifdef Q_OS_WIN32 +#ifdef Q_OS_WIN #include <utils/winutils.h> #endif @@ -180,20 +180,13 @@ void QmlProjectRunConfiguration::setQtVersionId(int id) } /* QtDeclarative checks explicitly that the capitalization for any URL / path - is exactly like the capitalization on disk. This method is uses the same - native Windows API's to get the exact canonical path. */ + is exactly like the capitalization on disk.*/ QString QmlProjectRunConfiguration::canonicalCapsPath(const QString &fileName) { QString canonicalPath = QFileInfo(fileName).canonicalFilePath(); -#if defined(Q_OS_WIN32) - // don't know whether the shortpath step is really needed, - // but we do this in QtDeclarative too. - QString path = Utils::getShortPathName(canonicalPath); - if (!path.isEmpty()) - path = Utils::getLongPathName(canonicalPath); - if (!path.isEmpty()) - canonicalPath = path; +#if defined(Q_OS_WIN) + canonicalPath = Utils::normalizePathName(canonicalPath); #endif return canonicalPath; diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index d2763af08e..c59b4a62bd 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -620,7 +620,7 @@ void QMakeStepConfigWidget::updateQmlDebuggingWarningsLabel() if (m_step->linkQmlDebuggingLibrary()) { if (m_step->isQmlDebuggingLibrarySupported()) { - m_ui.qmlDebuggingWarningText->setText("Might make your application vulnerable. Only use in a safe environment!"); + m_ui.qmlDebuggingWarningText->setText(tr("Might make the application vulnerable. Use only in a safe environment.")); } } diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h index 62c97cb2c4..c676ee0587 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h @@ -196,7 +196,7 @@ public: virtual bool allowsRemoteMounts() const { return false; } virtual bool allowsPackagingDisabling() const { return false; } - virtual bool allowsQmlDebugging() const { return true; } + virtual bool allowsQmlDebugging() const { return false; } virtual QString projectVersion(QString *error = 0) const; virtual QString packageName() const; @@ -258,7 +258,7 @@ public: virtual bool allowsRemoteMounts() const { return false; } virtual bool allowsPackagingDisabling() const { return false; } - virtual bool allowsQmlDebugging() const { return true; } + virtual bool allowsQmlDebugging() const { return false; } static QString defaultDisplayName(); diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index b6117a8919..2ee537db6a 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -4276,6 +4276,7 @@ void BaseTextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) if (!contextMenu->isEmpty()) contextMenu->exec(e->globalPos()); delete contextMenu; + e->accept(); } } else if (d->extraAreaSelectionAnchorBlockNumber >= 0) { QTextCursor selection = cursor; |