Commit 34cc807b authored by Thorbjørn Lindeijer's avatar Thorbjørn Lindeijer
Browse files

Fixed crash in function argument widget

It didn't make sure its Function* stayed valid. Now it does, by keeping
a copy of the list of CppDocuments (the snapshot) around.
parent 669b56fd
......@@ -47,6 +47,11 @@ TypeOfExpression::TypeOfExpression():
{
}
Snapshot TypeOfExpression::snapshot() const
{
return m_snapshot;
}
void TypeOfExpression::setSnapshot(const Snapshot &documents)
{
m_snapshot = documents;
......
......@@ -54,6 +54,8 @@ public:
public:
TypeOfExpression();
Snapshot snapshot() const;
/**
* Sets the documents used to evaluate expressions. Should be set before
* calling this functor.
......
......@@ -77,7 +77,7 @@ namespace Internal {
class FunctionArgumentWidget : public QLabel {
public:
FunctionArgumentWidget(Core::ICore *core);
void showFunctionHint(Function *functionSymbol);
void showFunctionHint(Function *functionSymbol, const Snapshot &snapshot);
protected:
bool eventFilter(QObject *obj, QEvent *e);
......@@ -94,6 +94,7 @@ private:
QFrame *m_popupFrame;
Function *m_item;
Snapshot m_snapshot;
};
class ConvertToCompletionItem: protected NameVisitor
......@@ -212,9 +213,11 @@ FunctionArgumentWidget::FunctionArgumentWidget(Core::ICore *core)
setMargin(1);
}
void FunctionArgumentWidget::showFunctionHint(Function *functionSymbol)
void FunctionArgumentWidget::showFunctionHint(Function *functionSymbol,
const Snapshot &snapshot)
{
m_item = functionSymbol;
m_snapshot = snapshot;
m_startpos = m_editor->position();
// update the text
......@@ -1023,7 +1026,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
QTC_ASSERT(function, return);
m_functionArgumentWidget = new FunctionArgumentWidget(m_core);
m_functionArgumentWidget->showFunctionHint(function);
m_functionArgumentWidget->showFunctionHint(function, typeOfExpression.snapshot());
}
} else if (m_completionOperator == T_SIGNAL || m_completionOperator == T_SLOT) {
QString toInsert = item.m_text;
......
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