diff options
author | David Schulz <david.schulz@qt.io> | 2022-11-30 12:28:06 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2022-12-08 06:16:33 +0000 |
commit | 69ce2a40477a912e16dd57bfaab34b850421bbbb (patch) | |
tree | 753d4f82b77db8a5ddffb6aed7c58d80d519247c /src/plugins/languageclient/languageclientcompletionassist.cpp | |
parent | 0313470db0d5333ea5eda2da81e15c682f3ab981 (diff) | |
download | qt-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.cpp | 13 |
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 |