diff options
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 14 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 2 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index a5ac6a2211..a0a745ac4c 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -679,10 +679,18 @@ static int effectiveTextMargin(int defaultMargin, const QLineEditPrivate::SideWi if (widgets.empty()) return defaultMargin; - return defaultMargin + (parameters.margin + parameters.widgetWidth) * - int(std::count_if(widgets.begin(), widgets.end(), + const auto visibleSideWidgetCount = std::count_if(widgets.begin(), widgets.end(), [](const QLineEditPrivate::SideWidgetEntry &e) { - return e.widget->isVisibleTo(e.widget->parentWidget()); })); +#if QT_CONFIG(animation) + // a button that's fading out doesn't get any space + if (auto* iconButton = qobject_cast<QLineEditIconButton*>(e.widget)) + return iconButton->needsSpace(); + +#endif + return e.widget->isVisibleTo(e.widget->parentWidget()); + }); + + return defaultMargin + (parameters.margin + parameters.widgetWidth) * visibleSideWidgetCount; } QMargins QLineEditPrivate::effectiveTextMargins() const diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index de9b9c1636..bb1e6232c4 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -95,6 +95,8 @@ public: bool shouldHideWithText() const; void setHideWithText(bool hide); + // m_wasHidden is true unless the button is fading out + bool needsSpace() const { return m_wasHidden; } #endif protected: |