From a86da031c7a9473b3883c5ea117d15f7e6d979f9 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 4 May 2021 11:21:13 +0200 Subject: [PATCH] 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 Reviewed-by: Christian Kandeler --- src/plugins/texteditor/codeassist/codeassistant.cpp | 2 +- .../texteditor/codeassist/functionhintproposalwidget.cpp | 7 ++++++- .../texteditor/codeassist/functionhintproposalwidget.h | 2 ++ src/plugins/texteditor/codeassist/iassistproposalwidget.h | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 1c499956187..7439980df31 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -407,7 +407,7 @@ void CodeAssistantPrivate::finalizeProposal() bool CodeAssistantPrivate::isDisplayingProposal() const { - return m_proposalWidget != nullptr && m_proposalWidget->isVisible(); + return m_proposalWidget != nullptr && m_proposalWidget->proposalIsVisible(); } bool CodeAssistantPrivate::isWaitingForProposal() const diff --git a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp index 149fba33fa3..e96071cec5a 100644 --- a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp +++ b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp @@ -219,10 +219,15 @@ void FunctionHintProposalWidget::closeProposal() abort(); } +bool FunctionHintProposalWidget::proposalIsVisible() const +{ + return d->m_popupFrame->isVisible(); +} + void FunctionHintProposalWidget::abort() { qApp->removeEventFilter(this); - if (d->m_popupFrame->isVisible()) + if (proposalIsVisible()) d->m_popupFrame->close(); deleteLater(); } diff --git a/src/plugins/texteditor/codeassist/functionhintproposalwidget.h b/src/plugins/texteditor/codeassist/functionhintproposalwidget.h index 99def1676a1..a37905bbad5 100644 --- a/src/plugins/texteditor/codeassist/functionhintproposalwidget.h +++ b/src/plugins/texteditor/codeassist/functionhintproposalwidget.h @@ -52,6 +52,8 @@ public: void updateProposal(const QString &prefix) override; void closeProposal() override; + bool proposalIsVisible() const override; + protected: bool eventFilter(QObject *o, QEvent *e) override; diff --git a/src/plugins/texteditor/codeassist/iassistproposalwidget.h b/src/plugins/texteditor/codeassist/iassistproposalwidget.h index 0b7fdc0dddf..d178fc4b5ed 100644 --- a/src/plugins/texteditor/codeassist/iassistproposalwidget.h +++ b/src/plugins/texteditor/codeassist/iassistproposalwidget.h @@ -57,6 +57,8 @@ public: virtual void updateProposal(const QString &prefix) = 0; virtual void closeProposal() = 0; + virtual bool proposalIsVisible() const { return isVisible(); } + int basePosition() const; void setBasePosition(int basePosition);