diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index 36f5e66359c9f861d2a3c32b061ecaf2acd22113..75bf03f0e109caf618942f33d203ff17de47f14f 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -44,6 +44,7 @@ #include <cplusplus/Literals.h> #include <cplusplus/Scope.h> #include <cplusplus/Control.h> +#include <cplusplus/TranslationUnit.h> #include <cplusplus/DeprecatedLookupContext.h> #include <coreplugin/icore.h> #include <coreplugin/editormanager/editormanager.h> @@ -404,8 +405,10 @@ static inline ITextEditable *editableAt(const QString &fileName, int line, int c return qobject_cast<ITextEditable *>(TextEditor::BaseTextEditor::openEditorAt(fileName, line, column)); } -static void addDeclaration(const QString &docFileName, const Class *cl, const QString &functionName) +static void addDeclaration(Document::Ptr doc, const Class *cl, const QString &functionName) { + const QString docFileName = doc->fileName(); + TranslationUnit *unit = doc->translationUnit(); QString declaration = QLatin1String("void "); declaration += functionName; declaration += QLatin1String(";\n"); @@ -423,7 +426,7 @@ static void addDeclaration(const QString &docFileName, const Class *cl, const QS const int column = fun->column(); if (ITextEditable *editable = editableAt(docFileName, line, column)) { unsigned dl, dc; // this position is the beginning of return value: "^void foo(...)" - decl->getStartPosition(&dl, &dc); + unit->getPosition(decl->startOffset(), &dl, &dc); dc--; // if the first character in line is 'v' coming from "void" getStartPosition returns 1, not 0, so we always decrement it. editable->gotoLine(dl, dc); editable->position(ITextEditor::StartOfLine); @@ -661,7 +664,7 @@ bool QtCreatorIntegration::navigateToSlot(const QString &objectName, } } else { // add function declaration to cl - addDeclaration(doc->fileName(), cl, functionNameWithParameterNames); + addDeclaration(doc, cl, functionNameWithParameterNames); // add function definition to cpp file sourceDoc = addDefinition(docTable, doc->fileName(), className, functionNameWithParameterNames, &line);