TextEditor: Fix is visible check of function hint

Since the FunctionHintProposalWidget is just a proxy witget that uses a
FakeToolTip it is not shown directly so we cannot check the visibility
with isVisible.

Fixes: QTCREATORBUG-25664
Change-Id: I6888e373afcfc79565ce8e3dad1bb05501d58200
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-05-04 11:21:13 +02:00
parent 97744a071a
commit a86da031c7
4 changed files with 11 additions and 2 deletions

View File

@@ -407,7 +407,7 @@ void CodeAssistantPrivate::finalizeProposal()
bool CodeAssistantPrivate::isDisplayingProposal() const bool CodeAssistantPrivate::isDisplayingProposal() const
{ {
return m_proposalWidget != nullptr && m_proposalWidget->isVisible(); return m_proposalWidget != nullptr && m_proposalWidget->proposalIsVisible();
} }
bool CodeAssistantPrivate::isWaitingForProposal() const bool CodeAssistantPrivate::isWaitingForProposal() const

View File

@@ -219,10 +219,15 @@ void FunctionHintProposalWidget::closeProposal()
abort(); abort();
} }
bool FunctionHintProposalWidget::proposalIsVisible() const
{
return d->m_popupFrame->isVisible();
}
void FunctionHintProposalWidget::abort() void FunctionHintProposalWidget::abort()
{ {
qApp->removeEventFilter(this); qApp->removeEventFilter(this);
if (d->m_popupFrame->isVisible()) if (proposalIsVisible())
d->m_popupFrame->close(); d->m_popupFrame->close();
deleteLater(); deleteLater();
} }

View File

@@ -52,6 +52,8 @@ public:
void updateProposal(const QString &prefix) override; void updateProposal(const QString &prefix) override;
void closeProposal() override; void closeProposal() override;
bool proposalIsVisible() const override;
protected: protected:
bool eventFilter(QObject *o, QEvent *e) override; bool eventFilter(QObject *o, QEvent *e) override;

View File

@@ -57,6 +57,8 @@ public:
virtual void updateProposal(const QString &prefix) = 0; virtual void updateProposal(const QString &prefix) = 0;
virtual void closeProposal() = 0; virtual void closeProposal() = 0;
virtual bool proposalIsVisible() const { return isVisible(); }
int basePosition() const; int basePosition() const;
void setBasePosition(int basePosition); void setBasePosition(int basePosition);