From 1b6b95afcce4f475f0ffca62750539c5727c0d08 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 26 Apr 2011 18:19:53 +0200 Subject: [PATCH 1/7] Fixed typos in German error message Reviewed-by: ossi --- share/qtcreator/translations/qtcreator_de.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 923d6a79241..62e3bd19e25 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -2863,8 +2863,8 @@ This might yield incorrect results. The gdb process has not responded to a command within %1 seconds. This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. You can choose between waiting longer or abort debugging. - Der Gdb-Prozess hat nach %1 Sekunde nicht auf das Kommando reagiert. Das könnte bedeuten, dass er sich in einer Endlosschleife befinded oder für die Operation mehr Zeit benötigt. -Sie haben die Wahl zwischen Abwarten oder Abbrechen. + Der Gdb-Prozess hat nach %1 Sekunden nicht auf das Kommando reagiert. Das könnte bedeuten, dass er sich in einer Endlosschleife befindet oder für die Operation mehr Zeit benötigt. +Sie haben die Wahl zu warten oder abzubrechen. Stop debugging From 216cb89bd7455c46d2cfdc57729bf11a480e0f34 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 28 Apr 2011 09:04:49 +0200 Subject: [PATCH 2/7] QmlDebug: Fix 'Interrupt' functionality for mixed debugging Make sure that m_inferiorPid is initialized even when the CppEngine is not the main one, and therefore startDebugger() not called on it. Otherwise the engine tries to send a SIGINT signal to an arbirary process ID, resulting in the debugging being stopped. Reviewed-by: Friedemann Kleint Task-number: QTCREATORBUG-4716 --- src/plugins/debugger/debuggerengine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index b151f73f7d0..aed919bcbf7 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -168,6 +168,7 @@ public: m_state(DebuggerNotReady), m_lastGoodState(DebuggerNotReady), m_targetState(DebuggerNotReady), + m_inferiorPid(0), m_modulesHandler(), m_registerHandler(), m_sourceFilesHandler(), From 783779058b4a9aef8d7a147711185d6993abacce Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Apr 2011 10:41:03 +0200 Subject: [PATCH 3/7] QmlDump: fix path import dumps on Windows Absolute file pathes containing drive identifiers do not work in qml. (C:\) workaround: use "." imports and setting the component url. Reviewed-by: Christian Kamm (cherry picked from commit 0c8b4e38fab1862e3427aac7e7db68623bc7f174) --- share/qtcreator/qml/qmldump/main.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qml/qmldump/main.cpp b/share/qtcreator/qml/qmldump/main.cpp index 9d4df89861f..1324396ce07 100644 --- a/share/qtcreator/qml/qmldump/main.cpp +++ b/share/qtcreator/qml/qmldump/main.cpp @@ -59,6 +59,8 @@ #include #endif +QString pluginImportPath; + void collectReachableMetaObjects(const QMetaObject *meta, QSet *metas) { if (! meta || metas->contains(meta)) @@ -188,7 +190,7 @@ QSet collectReachableMetaObjects(const QString &importCode, code += " {}\n"; QDeclarativeComponent c(engine); - c.setData(code, QUrl("typeinstance")); + c.setData(code, QUrl::fromLocalFile(pluginImportPath + "/typeinstance.qml")); QObject *object = c.create(); if (object) @@ -442,7 +444,7 @@ int main(int argc, char *argv[]) QString pluginImportUri; QString pluginImportVersion; - QString pluginImportPath; + bool relocatable = true; bool pathImport = false; if (args.size() >= 3) { @@ -477,7 +479,7 @@ int main(int argc, char *argv[]) qWarning() << "Incorrect number of positional arguments"; return EXIT_INVALIDARGUMENTS; } - pluginImportPath = positionalArgs[1]; + pluginImportPath = QDir::fromNativeSeparators(positionalArgs[1]); if (positionalArgs.size() == 3) pluginImportVersion = positionalArgs[2]; } @@ -503,7 +505,7 @@ int main(int argc, char *argv[]) importCode += QString("import %0 %1\n").arg(pluginImportUri, pluginImportVersion).toAscii(); } else { // pluginImportVersion can be empty - importCode += QString("import \"%1\" %2\n").arg(pluginImportPath, pluginImportVersion).toAscii(); + importCode += QString("import \".\" %2\n").arg(pluginImportVersion).toAscii(); } // create a component with these imports to make sure the imports are valid @@ -513,7 +515,7 @@ int main(int argc, char *argv[]) code += "QtObject {}"; QDeclarativeComponent c(engine); - c.setData(code, QUrl("typelist")); + c.setData(code, QUrl::fromLocalFile(pluginImportPath + "/typelist.qml")); c.create(); if (!c.errors().isEmpty()) { foreach (const QDeclarativeError &error, c.errors()) From 98410507911325bf5fc73791e736467ebe1e49a8 Mon Sep 17 00:00:00 2001 From: con Date: Thu, 28 Apr 2011 15:05:14 +0200 Subject: [PATCH 4/7] Fix disassembler view on Xcode4. The gdb shipped with Xcode4 simply never returns if the command is "disassemble /m someaddress", Xcode3 returned an error, which resulted in a call for non-mixed disassembly. So we set the disassembler agent to not try mixed in case of Mac tool chain abi. Reviewed-by: Friedemann Kleint --- src/plugins/debugger/debuggerengine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index aed919bcbf7..e84fb090c06 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -180,6 +180,8 @@ public: m_isStateDebugging(false) { connect(&m_locationTimer, SIGNAL(timeout()), SLOT(resetLocation())); + if (sp.toolChainAbi.os() == ProjectExplorer::Abi::MacOS) + m_disassemblerAgent.setTryMixed(false); } ~DebuggerEnginePrivate() {} @@ -559,7 +561,6 @@ void DebuggerEngine::resetLocation() void DebuggerEngine::gotoLocation(const Location &loc) { if (debuggerCore()->boolSetting(OperateByInstruction) || !loc.hasDebugInfo()) { - d->m_disassemblerAgent.setTryMixed(true); d->m_disassemblerAgent.setLocation(loc); return; } @@ -1591,7 +1592,6 @@ void DebuggerEngine::updateMemoryViews() void DebuggerEngine::openDisassemblerView(const Location &location) { DisassemblerAgent *agent = new DisassemblerAgent(this); - agent->setTryMixed(true); agent->setLocation(location); } From 0b9b704584e68bb69df788649cef07d236f2838c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 28 Apr 2011 14:02:54 +0200 Subject: [PATCH 5/7] QmlDesigner.rewriter: crash fix When pasting or reading in a Component that has no object definition inside we crashed. I added an explicit check in the FirstDefinitionFinder. In the TextToModelMerger we then handle this case. Task-Nr: QTCREATORBUG-4730 Reviewed-by: Erik Verbruggen --- .../designercore/filemanager/firstdefinitionfinder.cpp | 5 ++++- .../designercore/filemanager/firstdefinitionfinder.h | 2 +- .../qmldesigner/designercore/model/texttomodelmerger.cpp | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp index 2e5d887254c..1edac108ad2 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp @@ -54,13 +54,16 @@ FirstDefinitionFinder::FirstDefinitionFinder(const QString &text): \arg the offset of the object to search in \return the offset of the first object definition */ -quint32 FirstDefinitionFinder::operator()(quint32 offset) +qint32 FirstDefinitionFinder::operator()(quint32 offset) { m_offset = offset; m_firstObjectDefinition = 0; Node::accept(m_doc->qmlProgram(), this); + if (!m_firstObjectDefinition) + return -1; + return m_firstObjectDefinition->firstSourceLocation().offset; } diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h index 867ed1006ba..aaf00c754ce 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h +++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h @@ -43,7 +43,7 @@ class FirstDefinitionFinder: protected QmlJS::AST::Visitor public: FirstDefinitionFinder(const QString &text); - quint32 operator()(quint32 offset); + qint32 operator()(quint32 offset); protected: using QmlJS::AST::Visitor::visit; diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 6e3f387da5d..b6b4e3b64ff 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -1397,6 +1397,10 @@ void TextToModelMerger::setupComponent(const ModelNode &node) if (componentText.contains("Component")) { //explicit component FirstDefinitionFinder firstDefinitionFinder(componentText); int offset = firstDefinitionFinder(0); + if (offset < 0) { + node.variantProperty("__component_data").setValue(QLatin1String("")); + return; //No object definition found + } ObjectLengthCalculator objectLengthCalculator; unsigned length; if (objectLengthCalculator(componentText, offset, length)) { From 43a10b9d1a2959088d0abff3942e1317bf7ec329 Mon Sep 17 00:00:00 2001 From: con Date: Fri, 29 Apr 2011 10:16:23 +0200 Subject: [PATCH 6/7] Version bump. --- qtcreator.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qtcreator.pri b/qtcreator.pri index 87d97350c2d..ef65e22f995 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -1,7 +1,7 @@ !isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 -QTCREATOR_VERSION = 2.1.84 +QTCREATOR_VERSION = 2.2.0 defineReplace(cleanPath) { win32:1 ~= s|\\\\|/|g From 8c74bc10d490f361ecef1e721e6d9b1bdcf4a7c7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 29 Apr 2011 10:10:23 +0200 Subject: [PATCH 7/7] QmlDesigner.statesEditor: crash fix If the current state is deleted we have to go to the base state to stay in a valid state. Task-Nr: QTCREATORBUG-4339 Reviewed-by: Kai Koehne --- .../qmldesigner/components/stateseditor/stateseditorview.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 345ef1227bd..96fc80810d6 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -264,6 +264,8 @@ void StatesEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode) m_lastIndex = propertyParent.indexOf(removedNode); } } + if (removedNode == currentState()) + setCurrentState(baseState()); } void StatesEditorView::nodeRemoved(const ModelNode & /*removedNode*/, const NodeAbstractProperty &parentProperty, PropertyChangeFlags /*propertyChange*/)