qt-creator: Backport a patch to fix Qbs crash

By Tobias Hunger:

06615843df
This commit is contained in:
Ray Donnelly
2014-10-04 01:58:35 +01:00
parent 2a52d9f54e
commit bf9fbea47d
2 changed files with 94 additions and 1 deletions

View File

@@ -0,0 +1,90 @@
From 06615843df1541e67686f6a016f0c81e154c1869 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Tue, 23 Sep 2014 13:05:00 +0200
Subject: [PATCH] Qbs: Do not crash when using simplified project view
Root cause is trying to set the display name on a FolderNode that
is not in the tree yet.
Allow setting the displayname in the constructor and use that new
constructor where it makes sense.
Task-number: QTCREATORBUG-12897
Change-Id: I907e48cac837966e38524bfe88a87ef17d93f0b2
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
---
src/plugins/projectexplorer/projectnodes.cpp | 6 ++++--
src/plugins/projectexplorer/projectnodes.h | 3 ++-
src/plugins/qbsprojectmanager/qbsnodes.cpp | 9 +++++----
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp
index c0a8a8e..b3bc123 100644
--- a/src/plugins/projectexplorer/projectnodes.cpp
+++ b/src/plugins/projectexplorer/projectnodes.cpp
@@ -247,10 +247,12 @@ bool FileNode::isGenerated() const
\sa ProjectExplorer::FileNode, ProjectExplorer::ProjectNode
*/
-FolderNode::FolderNode(const QString &folderPath, NodeType nodeType) :
+FolderNode::FolderNode(const QString &folderPath, NodeType nodeType, const QString &displayName) :
Node(nodeType, folderPath),
- m_displayName(QDir::toNativeSeparators(folderPath))
+ m_displayName(displayName)
{
+ if (m_displayName.isEmpty())
+ m_displayName = QDir::toNativeSeparators(folderPath);
}
FolderNode::~FolderNode()
diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index 8212e71..233f930 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -162,7 +162,8 @@ private:
class PROJECTEXPLORER_EXPORT FolderNode : public Node {
Q_OBJECT
public:
- explicit FolderNode(const QString &folderPath, NodeType nodeType = FolderNodeType);
+ explicit FolderNode(const QString &folderPath, NodeType nodeType = FolderNodeType,
+ const QString &displayName = QString());
virtual ~FolderNode();
QString displayName() const;
diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp
index ee63fbd..48af5cd 100644
--- a/src/plugins/qbsprojectmanager/qbsnodes.cpp
+++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp
@@ -527,14 +527,15 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
break;
}
if (!fn) {
- fn = new FolderNode(c->path());
+ fn = new FolderNode(c->path(), ProjectExplorer::FolderNodeType,
+ displayNameFromPath(c->path(), baseDir));
root->addFolderNodes(QList<FolderNode *>() << fn);
} else {
foldersToRemove.removeOne(fn);
if (updateExisting)
fn->emitNodeUpdated();
+ fn->setDisplayName(displayNameFromPath(c->path(), baseDir));
}
- fn->setDisplayName(displayNameFromPath(c->path(), baseDir));
setupFolder(fn, c, c->path(), updateExisting);
}
@@ -811,9 +812,9 @@ QbsProjectNode *QbsProjectNode::findProjectNode(const QString &name)
QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
QbsProjectNode(project->projectFilePath().toString()),
m_project(project),
- m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory().toString()))
+ m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory().toString(),
+ ProjectExplorer::FolderNodeType, tr("Qbs files")))
{
- m_buildSystemFiles->setDisplayName(tr("Qbs files"));
addFolderNodes(QList<FolderNode *>() << m_buildSystemFiles);
}
--
2.1.2

View File

@@ -8,7 +8,7 @@ pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
#_base_ver=3.3.0
_base_ver=3.2.1
pkgver=${_base_ver}${_pre}
pkgrel=1
pkgrel=2
pkgdesc='Cross-patform IDE (mingw-w64)'
url='http://qt-project.org'
install=qt-creator-${CARCH}.install
@@ -30,6 +30,7 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-gdb: for the debugger"
_pkgfqn="${_realname}-opensource-src-${_base_ver}${__pre}"
source=(#http://download.qt-project.org/development_releases/qtcreator/${_base_ver%.*}/${_base_ver}${__pre}/${_pkgfqn}.tar.gz
http://download.qt-project.org/official_releases/qtcreator/${pkgver%.*}/${pkgver}/${_pkgfqn}.tar.gz
0001-Qbs-Do-not-crash-when-using-simplified-project-view.patch
0001-autotools-Allow-builds-to-be-done-in-buildDir.patch
0001-autotools-Remove-broken-unchanged-check.patch
0002-autotools-Use-summaryInWorkdir.patch
@@ -45,6 +46,7 @@ source=(#http://download.qt-project.org/development_releases/qtcreator/${_base_v
)
noextract=(${_pkgfqn}.tar.gz)
sha256sums=('dd212d2379a08ca481ffc79fdf18ede48de0f5d025f485f06dccfe9aec67e74e'
'18f59946054e667b56276f53ec544d4786c3c249fee6c0bd9b0b565ed4b7cf2d'
'6c34b2bad7a24c5922d237dc67fcced14e83d65116f77cd84aa80ae2ebd4aad9'
'2f45ff4c2806c90c36f19da07707fef213e50fbf8825fe169e1bce6349efacee'
'22253cf29a2c8effebb1cc8313a0f350cf993d7fc404763063e6bd8444fa61f1'
@@ -63,6 +65,7 @@ prepare() {
tar -xzf ${SRCDEST}/${_pkgfqn}.tar.gz -C $srcdir || true
cd ${srcdir}/${_pkgfqn}
patch -p1 -i "${srcdir}"/0001-Qbs-Do-not-crash-when-using-simplified-project-view.patch
# Attempting to upstream: https://codereview.qt-project.org/#/c/93073/
patch -p1 -i "${srcdir}"/0001-autotools-Allow-builds-to-be-done-in-buildDir.patch
# patch -p1 -i "${srcdir}"/0001-autotools-Remove-broken-unchanged-check.patch