forked from qt-creator/qt-creator
Clang: Remember selected function signature hint
...when typing more arguments:
struct Foo {};
void f(int, int);
void f(Foo, Foo);
void f(char, char);
void c()
{
f( // 1. Trigger completion with Ctrl+Space
// 2. Chose item "f(Foo, Foo)"
// 3. Type: Foo(),
// OK, signature hint "f(Foo, Foo)" is displayed again
}
FunctionHintProposalWidget and IFunctionHintProposalModel are
instantiated for each calculation, so remember the selected hint in the
CodeAssist. Keep the latest 20 entries.
Task-number: QTCREATORBUG-11688
Change-Id: I579fc6d8a35dd8fa398e4b3170ddc05a85252d1a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -74,6 +74,9 @@ public:
|
||||
bool hasContext() const;
|
||||
void destroyContext();
|
||||
|
||||
QVariant userData() const;
|
||||
void setUserData(const QVariant &data);
|
||||
|
||||
CompletionAssistProvider *identifyActivationSequence();
|
||||
|
||||
void stopAutomaticProposalTimer();
|
||||
@@ -105,6 +108,7 @@ private:
|
||||
CompletionSettings m_settings;
|
||||
int m_abortedBasePosition;
|
||||
static const QChar m_null;
|
||||
QVariant m_userData;
|
||||
};
|
||||
|
||||
// --------------------
|
||||
@@ -340,6 +344,7 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR
|
||||
m_proposalWidget->setAssistant(q);
|
||||
m_proposalWidget->setReason(reason);
|
||||
m_proposalWidget->setKind(m_assistKind);
|
||||
m_proposalWidget->setBasePosition(basePosition);
|
||||
m_proposalWidget->setUnderlyingWidget(m_editorWidget);
|
||||
m_proposalWidget->setModel(proposalCandidateModel.take());
|
||||
m_proposalWidget->setDisplayRect(m_editorWidget->cursorRect(basePosition));
|
||||
@@ -465,6 +470,16 @@ void CodeAssistantPrivate::destroyContext()
|
||||
}
|
||||
}
|
||||
|
||||
QVariant CodeAssistantPrivate::userData() const
|
||||
{
|
||||
return m_userData;
|
||||
}
|
||||
|
||||
void CodeAssistantPrivate::setUserData(const QVariant &data)
|
||||
{
|
||||
m_userData = data;
|
||||
}
|
||||
|
||||
void CodeAssistantPrivate::startAutomaticProposalTimer()
|
||||
{
|
||||
if (m_settings.m_completionTrigger == AutomaticCompletion)
|
||||
@@ -572,6 +587,16 @@ void CodeAssistant::destroyContext()
|
||||
d->destroyContext();
|
||||
}
|
||||
|
||||
QVariant CodeAssistant::userData() const
|
||||
{
|
||||
return d->userData();
|
||||
}
|
||||
|
||||
void CodeAssistant::setUserData(const QVariant &data)
|
||||
{
|
||||
d->setUserData(data);
|
||||
}
|
||||
|
||||
void CodeAssistant::invoke(AssistKind kind, IAssistProvider *provider)
|
||||
{
|
||||
d->invoke(kind, provider);
|
||||
|
||||
Reference in New Issue
Block a user