CodeAssistant: block suggestions while proposal is visible

Change-Id: I78068306252c5c32304ea97e3abb2d87fdee7832
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
David Schulz
2023-05-10 15:23:24 +02:00
parent 0b8a0f8f59
commit edeea10e6a

View File

@@ -81,6 +81,7 @@ private:
IAssistProcessor *m_processor = nullptr;
AssistKind m_assistKind = TextEditor::Completion;
IAssistProposalWidget *m_proposalWidget = nullptr;
TextEditorWidget::SuggestionBlocker m_suggestionBlocker;
bool m_receivedContentWhileWaiting = false;
QTimer m_automaticProposalTimer;
CompletionSettings m_settings;
@@ -295,6 +296,7 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR
m_proposalWidget->setDisplayRect(m_editorWidget->cursorRect(basePosition));
m_proposalWidget->setIsSynchronized(!m_receivedContentWhileWaiting);
m_proposalWidget->showProposal(prefix);
m_suggestionBlocker = m_editorWidget->blockSuggestions();
}
void CodeAssistantPrivate::processProposalItem(AssistProposalItemInterface *proposalItem)
@@ -337,6 +339,7 @@ void CodeAssistantPrivate::handlePrefixExpansion(const QString &newPrefix)
void CodeAssistantPrivate::finalizeProposal()
{
stopAutomaticProposalTimer();
m_suggestionBlocker.reset();
m_proposalWidget = nullptr;
if (m_receivedContentWhileWaiting)
m_receivedContentWhileWaiting = false;