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
|
class CodeAssistantPrivate : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CodeAssistantPrivate(CodeAssistant *assistant);
|
CodeAssistantPrivate(CodeAssistant *assistant, TextEditorWidget *editorWidget);
|
||||||
|
|
||||||
void configure(TextEditorWidget *editorWidget);
|
|
||||||
bool isConfigured() const;
|
|
||||||
|
|
||||||
void invoke(AssistKind kind, IAssistProvider *provider = nullptr);
|
void invoke(AssistKind kind, IAssistProvider *provider = nullptr);
|
||||||
void process();
|
void process();
|
||||||
@@ -99,8 +96,9 @@ private:
|
|||||||
// --------------------
|
// --------------------
|
||||||
const QChar CodeAssistantPrivate::m_null;
|
const QChar CodeAssistantPrivate::m_null;
|
||||||
|
|
||||||
CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant)
|
CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant, TextEditorWidget *editorWidget)
|
||||||
: q(assistant)
|
: q(assistant)
|
||||||
|
, m_editorWidget(editorWidget)
|
||||||
{
|
{
|
||||||
m_automaticProposalTimer.setSingleShot(true);
|
m_automaticProposalTimer.setSingleShot(true);
|
||||||
connect(&m_automaticProposalTimer, &QTimer::timeout,
|
connect(&m_automaticProposalTimer, &QTimer::timeout,
|
||||||
@@ -112,24 +110,11 @@ CodeAssistantPrivate::CodeAssistantPrivate(CodeAssistant *assistant)
|
|||||||
|
|
||||||
connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged,
|
connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged,
|
||||||
this, &CodeAssistantPrivate::clearAbortedPosition);
|
this, &CodeAssistantPrivate::clearAbortedPosition);
|
||||||
}
|
|
||||||
|
|
||||||
void CodeAssistantPrivate::configure(TextEditorWidget *editorWidget)
|
|
||||||
{
|
|
||||||
m_editorWidget = editorWidget;
|
|
||||||
m_editorWidget->installEventFilter(this);
|
m_editorWidget->installEventFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CodeAssistantPrivate::isConfigured() const
|
|
||||||
{
|
|
||||||
return m_editorWidget != nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider)
|
void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider)
|
||||||
{
|
{
|
||||||
if (!isConfigured())
|
|
||||||
return;
|
|
||||||
|
|
||||||
stopAutomaticProposalTimer();
|
stopAutomaticProposalTimer();
|
||||||
|
|
||||||
if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile()
|
if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile()
|
||||||
@@ -159,9 +144,6 @@ bool CodeAssistantPrivate::requestActivationCharProposal()
|
|||||||
|
|
||||||
void CodeAssistantPrivate::process()
|
void CodeAssistantPrivate::process()
|
||||||
{
|
{
|
||||||
if (!isConfigured())
|
|
||||||
return;
|
|
||||||
|
|
||||||
stopAutomaticProposalTimer();
|
stopAutomaticProposalTimer();
|
||||||
|
|
||||||
if (m_assistKind == TextEditor::Completion) {
|
if (m_assistKind == TextEditor::Completion) {
|
||||||
@@ -552,7 +534,8 @@ bool CodeAssistantPrivate::eventFilter(QObject *o, QEvent *e)
|
|||||||
// -------------
|
// -------------
|
||||||
// CodeAssistant
|
// CodeAssistant
|
||||||
// -------------
|
// -------------
|
||||||
CodeAssistant::CodeAssistant() : d(new CodeAssistantPrivate(this))
|
CodeAssistant::CodeAssistant(TextEditorWidget *editorWidget)
|
||||||
|
: d(new CodeAssistantPrivate(this, editorWidget))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,11 +545,6 @@ CodeAssistant::~CodeAssistant()
|
|||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeAssistant::configure(TextEditorWidget *editorWidget)
|
|
||||||
{
|
|
||||||
d->configure(editorWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CodeAssistant::process()
|
void CodeAssistant::process()
|
||||||
{
|
{
|
||||||
d->process();
|
d->process();
|
||||||
|
|||||||
@@ -20,11 +20,9 @@ class CodeAssistant : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CodeAssistant();
|
CodeAssistant(TextEditorWidget *editorWidget);
|
||||||
~CodeAssistant() override;
|
~CodeAssistant() override;
|
||||||
|
|
||||||
void configure(TextEditorWidget *editorWidget);
|
|
||||||
|
|
||||||
void process();
|
void process();
|
||||||
void notifyChange();
|
void notifyChange();
|
||||||
bool hasContext() const;
|
bool hasContext() const;
|
||||||
|
|||||||
@@ -904,6 +904,7 @@ TextEditorWidgetPrivate::TextEditorWidgetPrivate(TextEditorWidget *parent)
|
|||||||
, m_requestMarkEnabled(true)
|
, m_requestMarkEnabled(true)
|
||||||
, m_lineSeparatorsAllowed(false)
|
, m_lineSeparatorsAllowed(false)
|
||||||
, m_maybeFakeTooltipEvent(false)
|
, m_maybeFakeTooltipEvent(false)
|
||||||
|
, m_codeAssistant(parent)
|
||||||
, m_hoverHandlerRunner(parent, m_hoverHandlers)
|
, m_hoverHandlerRunner(parent, m_hoverHandlers)
|
||||||
, m_clipboardAssistProvider(new ClipboardAssistProvider)
|
, m_clipboardAssistProvider(new ClipboardAssistProvider)
|
||||||
, m_autoCompleter(new AutoCompleter)
|
, m_autoCompleter(new AutoCompleter)
|
||||||
@@ -8876,7 +8877,6 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP
|
|||||||
textEditorWidget->autoCompleter()->setTabSettings(document->tabSettings());
|
textEditorWidget->autoCompleter()->setTabSettings(document->tabSettings());
|
||||||
textEditorWidget->d->m_hoverHandlers = m_hoverHandlers;
|
textEditorWidget->d->m_hoverHandlers = m_hoverHandlers;
|
||||||
|
|
||||||
textEditorWidget->d->m_codeAssistant.configure(textEditorWidget);
|
|
||||||
textEditorWidget->d->m_commentDefinition = m_commentDefinition;
|
textEditorWidget->d->m_commentDefinition = m_commentDefinition;
|
||||||
|
|
||||||
QObject::connect(textEditorWidget,
|
QObject::connect(textEditorWidget,
|
||||||
|
|||||||
Reference in New Issue
Block a user