forked from qt-creator/qt-creator
Merge remote branch 'origin/2.2'
Conflicts: src/plugins/projectexplorer/gcctoolchain.cpp src/plugins/projectexplorer/target.cpp src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
This commit is contained in:
@@ -11022,6 +11022,24 @@
|
||||
switch to the nfs-kernel-server, or create a symlink so that the
|
||||
settings are stored locally.
|
||||
|
||||
\o The Okteta KDE custom widget plugin might be installed as part of
|
||||
some Linux distributions. It can cause Qt Designer to crash. For
|
||||
more information, see:
|
||||
|
||||
\list
|
||||
|
||||
\o \l{https://bugs.launchpad.net/ubuntu/+source/kdeutils/+bug/662005}{Ubuntu bug 662005}
|
||||
\o \l{http://bugreports.qt.nokia.com/browse/QTBUG-12025}{QTBUG-12025}
|
||||
|
||||
\endlist
|
||||
|
||||
To resolve the issue, enter the following command to remove the package:
|
||||
\code
|
||||
sudo apt-get remove okteta
|
||||
\endcode
|
||||
Or delete the following file:
|
||||
\c /usr/lib/kde4/plugins/designer/oktetadesignerplugin.so.
|
||||
|
||||
\endlist
|
||||
|
||||
\section1 Editing Issues
|
||||
|
@@ -9544,6 +9544,10 @@ S60 emulator run configuration default display name, %1 is base pro-File name</e
|
||||
<source><b>qmake:</b> %1 %2</source>
|
||||
<translation><b>qmake:</b> %1 %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Might make the application vulnerable. Use only in a safe environment.</source>
|
||||
<translation>Kann die Anwendung angreifbar machen. Verwenden sie diese Option nur in sicherer Umgebung.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Qt4Manager</name>
|
||||
|
@@ -21045,6 +21045,10 @@ Check if the phone is connected and App TRK is running.</source>
|
||||
<source><b>qmake:</b> %1 %2</source>
|
||||
<translation><b>qmake:</b> %1 %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Might make the application vulnerable. Use only in a safe environment.</source>
|
||||
<translation>Может сделать приложение уязвимым. Используйте только в безопасных системах.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::QmlDebuggingLibrary</name>
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
|
@@ -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('&'));
|
||||
|
@@ -265,20 +265,6 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
|
||||
item->setValue(true);
|
||||
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"));
|
||||
|
@@ -101,8 +101,6 @@ enum DebuggerActionCode
|
||||
SwitchModeOnExit,
|
||||
|
||||
UseDebuggingHelpers,
|
||||
UseCustomDebuggingHelperLocation,
|
||||
CustomDebuggingHelperLocation,
|
||||
|
||||
UseCodeModel,
|
||||
ShowThreadNames,
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -50,31 +50,6 @@
|
||||
<bool>true</bool>
|
||||
</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">
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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)
|
||||
|
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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."));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user