summaryrefslogtreecommitdiff
path: root/src/plugins/languageclient/languageclientcompletionassist.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2022-11-30 12:28:06 +0100
committerDavid Schulz <david.schulz@qt.io>2022-12-08 06:16:33 +0000
commit69ce2a40477a912e16dd57bfaab34b850421bbbb (patch)
tree753d4f82b77db8a5ddffb6aed7c58d80d519247c /src/plugins/languageclient/languageclientcompletionassist.cpp
parent0313470db0d5333ea5eda2da81e15c682f3ab981 (diff)
downloadqt-creator-69ce2a40477a912e16dd57bfaab34b850421bbbb.tar.gz
Editor: ensure something is selected after model update
Change-Id: I3fbf14cb7aa60caef43340302e74e80ed5e3ba4c Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientcompletionassist.cpp')
-rw-r--r--src/plugins/languageclient/languageclientcompletionassist.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp
index afee00a5ac..23d6b3e3b2 100644
--- a/src/plugins/languageclient/languageclientcompletionassist.cpp
+++ b/src/plugins/languageclient/languageclientcompletionassist.cpp
@@ -285,11 +285,11 @@ public:
return static_cast<LanguageClientCompletionModel *>(model().data())->isComplete(prefix);
}
- void setProposal(IAssistProposal *proposal)
+ void setProposal(IAssistProposal *proposal, const QString &prefix)
{
if (!proposal)
return;
- updateModel(proposal->model());
+ updateModel(proposal->model(), prefix);
delete proposal;
}
@@ -303,7 +303,10 @@ public:
auto processor = m_provider->createProcessor(interface.get());
QTC_ASSERT(processor, return);
- processor->setAsyncCompletionAvailableHandler([this, processor](IAssistProposal *proposal) {
+ const QString prefix = interface->textAt(m_basePosition,
+ interface->position() - m_basePosition);
+
+ processor->setAsyncCompletionAvailableHandler([this, processor, prefix](IAssistProposal *proposal) {
QTC_ASSERT(processor == m_processor, return);
if (!processor->running()) {
// do not delete this processor directly since this function is called from within the processor
@@ -313,10 +316,10 @@ public:
Qt::QueuedConnection);
m_processor = nullptr;
}
- setProposal(proposal);
+ setProposal(proposal, prefix);
});
- setProposal(processor->start(std::move(interface)));
+ setProposal(processor->start(std::move(interface)), prefix);
if (processor->running())
m_processor = processor;
else