forked from qt-creator/qt-creator
Editor: always configured assistant
A code assistant is not usable without a text editor widget and is always created as part of one, so make the dependency obvious by require it in the construction of the code assistant. This removes a bunch of functions and cheks. Change-Id: I96556430082ff729d99d2ae2516599f9b8cbc704 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -34,10 +34,7 @@ namespace TextEditor {
|
||||
class CodeAssistantPrivate : public QObject
|
||||
{
|
||||
public:
|
||||
CodeAssistantPrivate(CodeAssistant *assistant);
|
||||
|
||||
void configure(TextEditorWidget *editorWidget);
|
||||
bool isConfigured() const;
|
||||
CodeAssistantPrivate(CodeAssistant *assistant, TextEditorWidget *editorWidget);
|
||||
|
||||
void invoke(AssistKind kind, IAssistProvider *provider = nullptr);
|
||||
void process();
|
||||
@@ -99,8 +96,9 @@ private:
|
||||
// --------------------
|
||||
const QChar CodeAssistantPrivate::m_null;
|
||||
|
||||
CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant)
|
||||
CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant, TextEditorWidget *editorWidget)
|
||||
: q(assistant)
|
||||
, m_editorWidget(editorWidget)
|
||||
{
|
||||
m_automaticProposalTimer.setSingleShot(true);
|
||||
connect(&m_automaticProposalTimer, &QTimer::timeout,
|
||||
@@ -112,24 +110,11 @@ CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant)
|
||||
|
||||
connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged,
|
||||
this, &CodeAssistantPrivate::clearAbortedPosition);
|
||||
}
|
||||
|
||||
void CodeAssistantPrivate::configure(TextEditorWidget *editorWidget)
|
||||
{
|
||||
m_editorWidget = editorWidget;
|
||||
m_editorWidget->installEventFilter(this);
|
||||
}
|
||||
|
||||
bool CodeAssistantPrivate::isConfigured() const
|
||||
{
|
||||
return m_editorWidget != nullptr;
|
||||
}
|
||||
|
||||
void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider)
|
||||
{
|
||||
if (!isConfigured())
|
||||
return;
|
||||
|
||||
stopAutomaticProposalTimer();
|
||||
|
||||
if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile()
|
||||
@@ -159,9 +144,6 @@ bool CodeAssistantPrivate::requestActivationCharProposal()
|
||||
|
||||
void CodeAssistantPrivate::process()
|
||||
{
|
||||
if (!isConfigured())
|
||||
return;
|
||||
|
||||
stopAutomaticProposalTimer();
|
||||
|
||||
if (m_assistKind == TextEditor::Completion) {
|
||||
@@ -552,7 +534,8 @@ bool CodeAssistantPrivate::eventFilter(QObject *o, QEvent *e)
|
||||
// -------------
|
||||
// CodeAssistant
|
||||
// -------------
|
||||
CodeAssistant::CodeAssistant() : d(new CodeAssistantPrivate(this))
|
||||
CodeAssistant::CodeAssistant(TextEditorWidget *editorWidget)
|
||||
: d(new CodeAssistantPrivate(this, editorWidget))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -562,11 +545,6 @@ CodeAssistant::~CodeAssistant()
|
||||
delete d;
|
||||
}
|
||||
|
||||
void CodeAssistant::configure(TextEditorWidget *editorWidget)
|
||||
{
|
||||
d->configure(editorWidget);
|
||||
}
|
||||
|
||||
void CodeAssistant::process()
|
||||
{
|
||||
d->process();
|
||||
|
||||
@@ -20,11 +20,9 @@ class CodeAssistant : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CodeAssistant();
|
||||
CodeAssistant(TextEditorWidget *editorWidget);
|
||||
~CodeAssistant() override;
|
||||
|
||||
void configure(TextEditorWidget *editorWidget);
|
||||
|
||||
void process();
|
||||
void notifyChange();
|
||||
bool hasContext() const;
|
||||
|
||||
@@ -904,6 +904,7 @@ TextEditorWidgetPrivate::TextEditorWidgetPrivate(TextEditorWidget *parent)
|
||||
, m_requestMarkEnabled(true)
|
||||
, m_lineSeparatorsAllowed(false)
|
||||
, m_maybeFakeTooltipEvent(false)
|
||||
, m_codeAssistant(parent)
|
||||
, m_hoverHandlerRunner(parent, m_hoverHandlers)
|
||||
, m_clipboardAssistProvider(new ClipboardAssistProvider)
|
||||
, m_autoCompleter(new AutoCompleter)
|
||||
@@ -8876,7 +8877,6 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP
|
||||
textEditorWidget->autoCompleter()->setTabSettings(document->tabSettings());
|
||||
textEditorWidget->d->m_hoverHandlers = m_hoverHandlers;
|
||||
|
||||
textEditorWidget->d->m_codeAssistant.configure(textEditorWidget);
|
||||
textEditorWidget->d->m_commentDefinition = m_commentDefinition;
|
||||
|
||||
QObject::connect(textEditorWidget,
|
||||
|
||||
Reference in New Issue
Block a user