aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/codeassist
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2022-06-24 13:06:05 +0200
committerDavid Schulz <david.schulz@qt.io>2022-06-28 11:47:34 +0000
commit84ef1118471be255712e0d7193b1b493f153071c (patch)
tree36f323295241a0d2c23de4ad827b89813ba4c31e /src/plugins/texteditor/codeassist
parent551d458605c9e494a66c25f59fd990990b72661b (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.cpp13
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);
}
}
}