forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/11.0'
Change-Id: Ifab8b72af33de4decf20d2a879bea4dfba1e9fbe
This commit is contained in:
@@ -12437,7 +12437,7 @@ Siehe auch die Einstellungen für Google Test.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The remote executable must be set in order to run a custom remote run configuration.</source>
|
<source>The remote executable must be set in order to run a custom remote run configuration.</source>
|
||||||
<translation>Die entfernte ausführbare Datei muss eingestellt sein um eine benutzerdefinierte enternte Ausführungskonfiguration zu verwenden.</translation>
|
<translation>Die entfernte ausführbare Datei muss gesetzt sein, um eine benutzerdefinierte entfernte Ausführungskonfiguration zu verwenden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Custom Executable</source>
|
<source>Custom Executable</source>
|
||||||
@@ -14425,7 +14425,7 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Set as the default CMake Tool to use when creating a new kit or when no value is set.</source>
|
<source>Set as the default CMake Tool to use when creating a new kit or when no value is set.</source>
|
||||||
<translation>Als vorgegebenes CMake-Werkzeug einstellen, das verwendet wird, wenn eine neues Kit erstellt wird oder kein Wert eingestellt ist.</translation>
|
<translation>Als vorgegebenes CMake-Werkzeug einstellen, das verwendet wird, wenn ein neues Kit erstellt wird oder kein Wert gesetzt ist.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Clone of %1</source>
|
<source>Clone of %1</source>
|
||||||
@@ -14481,7 +14481,7 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>A CMake tool must be set up for building. Configure a CMake tool in the kit options.</source>
|
<source>A CMake tool must be set up for building. Configure a CMake tool in the kit options.</source>
|
||||||
<translation>Zum Erstellen muss ein CMake-Werkzeug eingestellt sein. Die Konfiguration erfolgt in den Kit Einstellungen.</translation>
|
<translation>Zum Erstellen muss ein CMake-Werkzeug gesetzt sein. Die Konfiguration erfolgt in den Kit Einstellungen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>There is a CMakeCache.txt file in "%1", which suggest an in-source build was done before. You are now building in "%2", and the CMakeCache.txt file might confuse CMake.</source>
|
<source>There is a CMakeCache.txt file in "%1", which suggest an in-source build was done before. You are now building in "%2", and the CMakeCache.txt file might confuse CMake.</source>
|
||||||
@@ -32854,11 +32854,11 @@ Möchten Sie sie überschreiben?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device chosen. Select %1.</source>
|
<source>No device chosen. Select %1.</source>
|
||||||
<translation>Kein Gerät eingestellt. Wählen Sie %1 aus.</translation>
|
<translation>Kein Gerät ausgewählt. Wählen Sie %1 aus.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device chosen. Enable developer mode on a device.</source>
|
<source>No device chosen. Enable developer mode on a device.</source>
|
||||||
<translation>Kein Gerät eingestellt. Aktivieren Sie den Entwicklungsmodus auf einem Gerät.</translation>
|
<translation>Kein Gerät ausgewählt. Aktivieren Sie den Entwicklungsmodus auf einem Gerät.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device available.</source>
|
<source>No device available.</source>
|
||||||
@@ -34785,7 +34785,7 @@ Dies ist hilfreich, wenn das Build-Verzeichnis beschädigt ist oder das Projekt
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Set as the default Meson executable to use when creating a new kit or when no value is set.</source>
|
<source>Set as the default Meson executable to use when creating a new kit or when no value is set.</source>
|
||||||
<translation>Als vorgegebenes Meson-Werkzeug einstellen, das verwendet wird, wenn eine neues Kit erstellt wird oder kein Wert eingestellt ist.</translation>
|
<translation>Als vorgegebenes Meson-Werkzeug einstellen, das verwendet wird, wenn ein neues Kit erstellt wird oder kein Wert gesetzt ist.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -41386,7 +41386,7 @@ Was soll %1 tun?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device set.</source>
|
<source>No device set.</source>
|
||||||
<translation>Es ist kein Gerät eingestellt.</translation>
|
<translation>Es ist kein Gerät gesetzt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Device is incompatible with this kit.</source>
|
<source>Device is incompatible with this kit.</source>
|
||||||
@@ -43230,7 +43230,7 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source><b>qmake:</b> No Qt version set. Cannot run qmake.</source>
|
<source><b>qmake:</b> No Qt version set. Cannot run qmake.</source>
|
||||||
<translation><b>qmake:</b> Es ist keine Qt-Version eingestellt. qmake kann nicht ausgeführt werden.</translation>
|
<translation><b>qmake:</b> Es ist keine Qt-Version gesetzt. qmake kann nicht ausgeführt werden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source><b>qmake:</b> %1 %2</source>
|
<source><b>qmake:</b> %1 %2</source>
|
||||||
@@ -46061,7 +46061,7 @@ Are you sure?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote path not set</source>
|
<source>Remote path not set</source>
|
||||||
<translation>Der entfernte Pfad ist nicht eingestellt</translation>
|
<translation>Der entfernte Pfad ist nicht gesetzt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Executable on host:</source>
|
<source>Executable on host:</source>
|
||||||
@@ -46983,7 +46983,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No device configuration set.</source>
|
<source>No device configuration set.</source>
|
||||||
<translation>Es ist keine Gerätekonfiguration eingestellt.</translation>
|
<translation>Es ist keine Gerätekonfiguration gesetzt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot deploy: %1</source>
|
<source>Cannot deploy: %1</source>
|
||||||
@@ -47504,7 +47504,7 @@ Der Kontrollprozess konnte nicht gestartet werden.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The remote executable must be set in order to run a custom remote run configuration.</source>
|
<source>The remote executable must be set in order to run a custom remote run configuration.</source>
|
||||||
<translation>Die entfernte ausführbare Datei muss eingestellt sein um eine benutzerdefinierte enternte Ausführungskonfiguration zu verwenden.</translation>
|
<translation>Die entfernte ausführbare Datei muss gesetzt sein um eine benutzerdefinierte entfernte Ausführungskonfiguration zu verwenden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Custom Executable</source>
|
<source>Custom Executable</source>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -2048,14 +2048,14 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if (!value) {
|
if (!value) {
|
||||||
// We omit M16 messages if the type using ImmediateProperties
|
// We omit M16 messages if the enclosing type have ImmediateProperties classinfo.
|
||||||
// Ideally, we should obtain them through metaobject information
|
// Ideally, we should get this information from metaobject by checking the index
|
||||||
const bool omitMessage = !m_typeStack.isEmpty()
|
// metaObject->indexOfClassInfo("ImmediatePropertyNames"), for now it's hard coded.
|
||||||
&& ((m_typeStack.last() == "PropertyChanges")
|
if ( !m_typeStack.isEmpty()
|
||||||
|| m_typeStack.last() == "Binding")
|
&& ((m_typeStack.last() != "PropertyChanges")
|
||||||
&& !m_idStack.isEmpty() && m_idStack.last().contains(propertyName);
|
&& m_typeStack.last() != "Binding")) {
|
||||||
if (!omitMessage)
|
|
||||||
addMessage(ErrInvalidPropertyName, id->identifierToken, propertyName);
|
addMessage(ErrInvalidPropertyName, id->identifierToken, propertyName);
|
||||||
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,15 +198,16 @@ static QString initialStagingDir(Kit *kit)
|
|||||||
static bool supportsStageForInstallation(const Kit *kit)
|
static bool supportsStageForInstallation(const Kit *kit)
|
||||||
{
|
{
|
||||||
IDeviceConstPtr runDevice = DeviceKitAspect::device(kit);
|
IDeviceConstPtr runDevice = DeviceKitAspect::device(kit);
|
||||||
|
Id runDeviceType = DeviceTypeKitAspect::deviceTypeId(kit);
|
||||||
IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device(kit);
|
IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device(kit);
|
||||||
QTC_ASSERT(runDevice, return false);
|
QTC_ASSERT(runDeviceType.isValid(), return false);
|
||||||
QTC_ASSERT(buildDevice, return false);
|
QTC_ASSERT(buildDevice, return false);
|
||||||
return runDevice->id() != buildDevice->id()
|
return (!runDevice || runDevice->id() != buildDevice->id())
|
||||||
&& runDevice->type() != Android::Constants::ANDROID_DEVICE_TYPE
|
&& runDeviceType != Android::Constants::ANDROID_DEVICE_TYPE
|
||||||
&& runDevice->type() != Ios::Constants::IOS_DEVICE_TYPE
|
&& runDeviceType != Ios::Constants::IOS_DEVICE_TYPE
|
||||||
&& runDevice->type() != Ios::Constants::IOS_SIMULATOR_TYPE
|
&& runDeviceType != Ios::Constants::IOS_SIMULATOR_TYPE
|
||||||
&& runDevice->type() != BareMetal::Constants::BareMetalOsType
|
&& runDeviceType != BareMetal::Constants::BareMetalOsType
|
||||||
&& runDevice->type() != WebAssembly::Constants::WEBASSEMBLY_DEVICE_TYPE;
|
&& runDeviceType != WebAssembly::Constants::WEBASSEMBLY_DEVICE_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
|
CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
|
||||||
|
|||||||
@@ -285,6 +285,8 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP
|
|||||||
const int targetDefinitionLine = target.backtrace.last().line;
|
const int targetDefinitionLine = target.backtrace.last().line;
|
||||||
|
|
||||||
// Have a fresh look at the CMake file, not relying on a cached value
|
// Have a fresh look at the CMake file, not relying on a cached value
|
||||||
|
Core::DocumentManager::saveModifiedDocumentSilently(
|
||||||
|
Core::DocumentModel::documentForFilePath(targetCMakeFile));
|
||||||
expected_str<QByteArray> fileContent = targetCMakeFile.fileContents();
|
expected_str<QByteArray> fileContent = targetCMakeFile.fileContents();
|
||||||
cmListFile cmakeListFile;
|
cmListFile cmakeListFile;
|
||||||
std::string errorString;
|
std::string errorString;
|
||||||
@@ -410,6 +412,8 @@ CMakeBuildSystem::projectFileArgumentPosition(const QString &targetName, const Q
|
|||||||
const FilePath targetCMakeFile = target.backtrace.last().path;
|
const FilePath targetCMakeFile = target.backtrace.last().path;
|
||||||
|
|
||||||
// Have a fresh look at the CMake file, not relying on a cached value
|
// Have a fresh look at the CMake file, not relying on a cached value
|
||||||
|
Core::DocumentManager::saveModifiedDocumentSilently(
|
||||||
|
Core::DocumentModel::documentForFilePath(targetCMakeFile));
|
||||||
expected_str<QByteArray> fileContent = targetCMakeFile.fileContents();
|
expected_str<QByteArray> fileContent = targetCMakeFile.fileContents();
|
||||||
cmListFile cmakeListFile;
|
cmListFile cmakeListFile;
|
||||||
std::string errorString;
|
std::string errorString;
|
||||||
|
|||||||
@@ -1450,9 +1450,11 @@ void GdbEngine::handleStop2(const GdbMi &data)
|
|||||||
|
|
||||||
void GdbEngine::handleStop3()
|
void GdbEngine::handleStop3()
|
||||||
{
|
{
|
||||||
|
if (terminal() && state() != InferiorRunOk) {
|
||||||
DebuggerCommand cmd("-thread-info", Discardable);
|
DebuggerCommand cmd("-thread-info", Discardable);
|
||||||
cmd.callback = CB(handleThreadInfo);
|
cmd.callback = CB(handleThreadInfo);
|
||||||
runCommand(cmd);
|
runCommand(cmd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::handleShowVersion(const DebuggerResponse &response)
|
void GdbEngine::handleShowVersion(const DebuggerResponse &response)
|
||||||
|
|||||||
@@ -471,7 +471,7 @@ QWidget *QMakeStep::createConfigWidget()
|
|||||||
connect(abisListWidget, &QListWidget::itemChanged, this, [this] {
|
connect(abisListWidget, &QListWidget::itemChanged, this, [this] {
|
||||||
if (m_ignoreChanges.isLocked())
|
if (m_ignoreChanges.isLocked())
|
||||||
return;
|
return;
|
||||||
updateAbiWidgets();
|
abisChanged();
|
||||||
if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration())
|
if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration())
|
||||||
BuildManager::buildLists({bc->cleanSteps()});
|
BuildManager::buildLists({bc->cleanSteps()});
|
||||||
});
|
});
|
||||||
|
|||||||
Submodule src/shared/qbs updated: b4c7d6078c...b607fac54e
@@ -211,6 +211,38 @@ void onInferiorErrorOccurered(QProcess::ProcessError error)
|
|||||||
qCWarning(log) << "Inferior error: " << error << inferiorProcess.errorString();
|
qCWarning(log) << "Inferior error: " << error << inferiorProcess.errorString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Q_OS_LINUX
|
||||||
|
QString statusToString(int status)
|
||||||
|
{
|
||||||
|
if (WIFEXITED(status))
|
||||||
|
return QString("exit, status=%1").arg(WEXITSTATUS(status));
|
||||||
|
else if (WIFSIGNALED(status))
|
||||||
|
return QString("Killed by: %1").arg(WTERMSIG(status));
|
||||||
|
else if (WIFSTOPPED(status)) {
|
||||||
|
return QString("Stopped by: %1").arg(WSTOPSIG(status));
|
||||||
|
} else if (WIFCONTINUED(status))
|
||||||
|
return QString("Continued");
|
||||||
|
|
||||||
|
return QString("Unknown status");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool waitFor(int signalToWaitFor)
|
||||||
|
{
|
||||||
|
int status = 0;
|
||||||
|
|
||||||
|
waitpid(inferiorId, &status, WUNTRACED);
|
||||||
|
|
||||||
|
if (!WIFSTOPPED(status) || WSTOPSIG(status) != signalToWaitFor) {
|
||||||
|
qCCritical(log) << "Unexpected status during startup:" << statusToString(status)
|
||||||
|
<< ", aborting";
|
||||||
|
sendCrash(0xFF);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void onInferiorStarted()
|
void onInferiorStarted()
|
||||||
{
|
{
|
||||||
inferiorId = inferiorProcess.processId();
|
inferiorId = inferiorProcess.processId();
|
||||||
@@ -223,25 +255,21 @@ void onInferiorStarted()
|
|||||||
if (!debugMode)
|
if (!debugMode)
|
||||||
sendPid(inferiorId);
|
sendPid(inferiorId);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
if (debugMode) {
|
if (debugMode) {
|
||||||
|
qCInfo(log) << "Waiting for SIGTRAP from inferiors execve ...";
|
||||||
|
if (!waitFor(SIGTRAP))
|
||||||
|
return;
|
||||||
|
|
||||||
qCInfo(log) << "Detaching ...";
|
qCInfo(log) << "Detaching ...";
|
||||||
ptrace(PTRACE_DETACH, inferiorId, 0, SIGSTOP);
|
ptrace(PTRACE_DETACH, inferiorId, 0, SIGSTOP);
|
||||||
|
|
||||||
// Wait until the process actually finished detaching
|
// Wait until the process actually finished detaching
|
||||||
int status = 0;
|
if (!waitFor(SIGSTOP))
|
||||||
waitpid(inferiorId, &status, WUNTRACED);
|
return;
|
||||||
if (log().isInfoEnabled()) {
|
|
||||||
if (WIFEXITED(status))
|
|
||||||
qCInfo(log) << "inferior exited, status=" << WEXITSTATUS(status);
|
|
||||||
else if (WIFSIGNALED(status))
|
|
||||||
qCInfo(log) << "inferior killed by signal" << WTERMSIG(status);
|
|
||||||
else if (WIFSTOPPED(status))
|
|
||||||
qCInfo(log) << "inferior stopped by signal" << WSTOPSIG(status);
|
|
||||||
else if (WIFCONTINUED(status))
|
|
||||||
qCInfo(log) << "inferior continued";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qCInfo(log) << "Sending pid:" << inferiorId;
|
||||||
sendPid(inferiorId);
|
sendPid(inferiorId);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,12 +28,23 @@ Window {
|
|||||||
Text {
|
Text {
|
||||||
id: innerText
|
id: innerText
|
||||||
}
|
}
|
||||||
states: State {
|
states: [
|
||||||
|
State {
|
||||||
name: "widerText"
|
name: "widerText"
|
||||||
PropertyChanges { myText.width: undefined }
|
PropertyChanges { myText.width: undefined }
|
||||||
AnchorChanges { innerRect.width: undefined } // 16 29 37
|
AnchorChanges { innerRect.width: undefined } // 16 29 37
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
when: root.visible
|
||||||
|
PropertyChanges {
|
||||||
|
// change an object property that is not an ancestor
|
||||||
|
innerRect {
|
||||||
|
color: "blue"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Binding {rect.width: innerText.width}
|
Binding {rect.width: innerText.width}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user