forked from qt-creator/qt-creator
		
	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.
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user