Commit b260bf1e authored by Leandro Melo's avatar Leandro Melo Committed by Leandro T. C. Melo
Browse files

C++ editor: Fix follow symbol for member functions

Fix a regression introduced by ad53fa42
in which follow symbol takes you to the function declaration (instead
of to the type) for situations like the one below (the | indicates the
cursor):

void Ty|pe::function() {}

Change-Id: Iffd15b23bb0cd67eca5965cb22d9b60c4d024fb7
Reviewed-on: http://codereview.qt.nokia.com/1375

Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@nokia.com>
parent b4b9ba7e
......@@ -1363,34 +1363,37 @@ CPPEditorWidget::Link CPPEditorWidget::findLinkAt(const QTextCursor &cursor,
if (!m_modelManager)
return link;
const Snapshot snapshot = m_modelManager->snapshot();
const Snapshot &snapshot = m_modelManager->snapshot();
Document::Ptr doc = m_lastSemanticInfo.doc;
if (!doc) {
doc = snapshot.document(file()->fileName());
if (!doc)
return link;
}
if (m_lastSemanticInfo.doc){
Link l = attemptFuncDeclDef(cursor, m_lastSemanticInfo.doc, snapshot);
if (l.isValid()) {
return l;
QTextCursor tc = cursor;
QChar ch = characterAt(tc.position());
while (ch.isLetterOrNumber() || ch == QLatin1Char('_')) {
tc.movePosition(QTextCursor::NextCharacter);
ch = characterAt(tc.position());
}
if (doc->translationUnit() && doc->translationUnit()->ast()) {
int pos = tc.position();
while (characterAt(pos).isSpace())
++pos;
if (characterAt(pos) == QLatin1Char('(')) {
link = attemptFuncDeclDef(cursor, doc, snapshot);
if (link.isValid())
return link;
}
}
int lineNumber = 0, positionInBlock = 0;
convertPosition(cursor.position(), &lineNumber, &positionInBlock);
Document::Ptr doc = snapshot.document(file()->fileName());
if (!doc)
return link;
const unsigned line = lineNumber;
const unsigned column = positionInBlock + 1;
QTextCursor tc = cursor;
// Make sure we're not at the start of a word
{
const QChar c = characterAt(tc.position());
if (c.isLetter() || c == QLatin1Char('_'))
tc.movePosition(QTextCursor::Right);
}
int beginOfToken = 0;
int endOfToken = 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment