diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 9 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index a0a745ac4c..9298e08501 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -418,8 +418,9 @@ void QLineEditIconButton::setHideWithText(bool hide) void QLineEditIconButton::onAnimationFinished() { - if (shouldHideWithText() && isVisible() && !m_wasHidden) { + if (shouldHideWithText() && isVisible() && m_fadingOut) { hide(); + m_fadingOut = false; // Invalidate previous geometry to take into account new size of side widgets if (auto le = lineEditPrivate()) @@ -429,7 +430,7 @@ void QLineEditIconButton::onAnimationFinished() void QLineEditIconButton::animateShow(bool visible) { - m_wasHidden = visible; + m_fadingOut = !visible; if (shouldHideWithText() && !isVisible()) { show(); diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index bb1e6232c4..f26a4e32db 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -95,8 +95,11 @@ public: bool shouldHideWithText() const; void setHideWithText(bool hide); - // m_wasHidden is true unless the button is fading out - bool needsSpace() const { return m_wasHidden; } + bool needsSpace() const { + if (m_fadingOut) + return false; + return isVisibleTo(parentWidget()); + } #endif protected: @@ -120,7 +123,7 @@ private: #if QT_CONFIG(animation) bool m_hideWithText = false; - bool m_wasHidden = false; + bool m_fadingOut = false; #endif }; |