From 986c9560e9c54276ee2ac421ff0b347328d62946 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 8 Apr 2011 11:54:17 +0200 Subject: [PATCH] QmlObserver: Fix 'Apply Changes on Save' on Mac Use the generic FileInProjectFinder instead of some homebrewn matching algorithm (which didn't handle the case that on Mac OS X, files are copied to the app bundle). Reviewed-by: Christiaan Janssen Task-number: QTCREATORBUG-3188 --- .../qmljsinspector/qmljsclientproxy.cpp | 11 +------- src/plugins/qmljsinspector/qmljsinspector.cpp | 25 ++----------------- src/plugins/qmljsinspector/qmljsinspector.h | 6 +---- 3 files changed, 4 insertions(+), 38 deletions(-) diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index 296d39af90b..d937f3eb009 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -516,16 +516,7 @@ void ClientProxy::buildDebugIdHashRecursive(const QDeclarativeDebugObjectReferen lineNum += rx.cap(3).toInt() - 1; } - //convert the filename to a canonical filename in case of shadow build. - bool isShadowBuild = InspectorUi::instance()->isShadowBuildProject(); - if (isShadowBuild && rev == 0) { - QString shadowBuildDir = InspectorUi::instance()->debugProjectBuildDirectory(); - - if (filename.startsWith(shadowBuildDir)) { - ProjectExplorer::Project *debugProject = InspectorUi::instance()->debugProject(); - filename = debugProject->projectDirectory() + filename.mid(shadowBuildDir.length()); - } - } + filename = InspectorUi::instance()->findFileInProject(filename); // append the debug ids in the hash m_debugIdHash[qMakePair(filename, rev)][qMakePair(lineNum, colNum)].append(ref.debugId()); diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index dc9f2df203d..d6518765af7 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -310,13 +310,6 @@ void InspectorUi::connected(ClientProxy *clientProxy) } m_debugProject = ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject(); - if (m_debugProject->activeTarget() - && m_debugProject->activeTarget()->activeBuildConfiguration()) - { - ProjectExplorer::BuildConfiguration *bc - = m_debugProject->activeTarget()->activeBuildConfiguration(); - m_debugProjectBuildDir = bc->buildDirectory(); - } connect(m_debugProject, SIGNAL(destroyed()), SLOT(currentDebugProjectRemoved())); m_projectFinder.setProjectDirectory(m_debugProject->projectDirectory()); @@ -787,23 +780,9 @@ InspectorUi *InspectorUi::instance() return m_instance; } -ProjectExplorer::Project *InspectorUi::debugProject() const +QString InspectorUi::findFileInProject(const QString &originalPath) const { - return m_debugProject; -} - -bool InspectorUi::isShadowBuildProject() const -{ - // for .qmlproject based stuff, build dir is empty - if (!debugProject() || debugProjectBuildDirectory().isEmpty()) - return false; - - return (debugProject()->projectDirectory() != debugProjectBuildDirectory()); -} - -QString InspectorUi::debugProjectBuildDirectory() const -{ - return m_debugProjectBuildDir; + return m_projectFinder.findFile(originalPath); } void InspectorUi::setApplyChangesToQmlObserver(bool applyChanges) diff --git a/src/plugins/qmljsinspector/qmljsinspector.h b/src/plugins/qmljsinspector/qmljsinspector.h index 4beadc6b55d..b752ddb37fa 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.h +++ b/src/plugins/qmljsinspector/qmljsinspector.h @@ -96,10 +96,7 @@ public: static InspectorUi *instance(); - // returns the project being currently debugged, or 0 if not debugging anything - ProjectExplorer::Project *debugProject() const; - QString debugProjectBuildDirectory() const; - bool isShadowBuildProject() const; + QString findFileInProject(const QString &file) const; void setupUi(); bool isConnected() const; @@ -173,7 +170,6 @@ private: // project is needed for matching filenames, esp. with shadow builds. ProjectExplorer::Project *m_debugProject; - QString m_debugProjectBuildDir; QStringList m_pendingPreviewDocumentNames; Utils::FileInProjectFinder m_projectFinder;