diff options
author | David Schulz <david.schulz@qt.io> | 2022-06-24 13:06:05 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2022-06-28 11:47:34 +0000 |
commit | 84ef1118471be255712e0d7193b1b493f153071c (patch) | |
tree | 36f323295241a0d2c23de4ad827b89813ba4c31e /src/plugins/texteditor/codeassist | |
parent | 551d458605c9e494a66c25f59fd990990b72661b (diff) |
Editor: only close proposal widgets after updates
To prevent closing function hint widgets after the completion processor
did not return a proposal.
Change-Id: I1901f3f21917d348ef12a6db846739e3c54752fb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/texteditor/codeassist')
-rw-r--r-- | src/plugins/texteditor/codeassist/codeassistant.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index e324fb6dd5..50b5626ca7 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -64,7 +64,10 @@ public: void invoke(AssistKind kind, IAssistProvider *provider = nullptr); void process(); - void requestProposal(AssistReason reason, AssistKind kind, IAssistProvider *provider = nullptr); + void requestProposal(AssistReason reason, + AssistKind kind, + IAssistProvider *provider = nullptr, + bool isUpdate = false); void cancelCurrentRequest(); void invalidateCurrentRequestData(); void displayProposal(IAssistProposal *newProposal, AssistReason reason); @@ -192,7 +195,8 @@ void CodeAssistantPrivate::process() void CodeAssistantPrivate::requestProposal(AssistReason reason, AssistKind kind, - IAssistProvider *provider) + IAssistProvider *provider, + bool isUpdate) { // make sure to cleanup old proposals if we cannot find a new assistant Utils::ExecuteOnDestruction earlyReturnContextClear([this]() { destroyContext(); }); @@ -284,7 +288,8 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, displayProposal(newProposal, reason); delete processor; } else if (!processor->running()) { - destroyContext(); + if (isUpdate) + destroyContext(); delete processor; } else { // ...async request was triggered if (IAssistProposal *newProposal = processor->immediateProposal(assistInterface)) @@ -487,7 +492,7 @@ void CodeAssistantPrivate::notifyChange() if (!isDisplayingProposal()) requestActivationCharProposal(); } else { - requestProposal(m_proposal->reason(), m_assistKind, m_requestProvider); + requestProposal(m_proposal->reason(), m_assistKind, m_requestProvider, true); } } } |