summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qlineedit_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/widgets/qlineedit_p.h')
-rw-r--r--src/widgets/widgets/qlineedit_p.h38
1 files changed, 28 insertions, 10 deletions
diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h
index 60372ab393..1d81090b0f 100644
--- a/src/widgets/widgets/qlineedit_p.h
+++ b/src/widgets/widgets/qlineedit_p.h
@@ -65,6 +65,8 @@
QT_BEGIN_NAMESPACE
+class QLineEditPrivate;
+
// QLineEditIconButton: This is a simple helper class that represents clickable icons that fade in with text
class Q_AUTOTEST_EXPORT QLineEditIconButton : public QToolButton
@@ -72,8 +74,6 @@ class Q_AUTOTEST_EXPORT QLineEditIconButton : public QToolButton
Q_OBJECT
Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
public:
- enum { IconMargin = 4, IconButtonSize = 16 };
-
explicit QLineEditIconButton(QWidget *parent = 0);
qreal opacity() const { return m_opacity; }
@@ -93,6 +93,7 @@ private:
#ifndef QT_NO_ANIMATION
void startOpacityAnimation(qreal endValue);
#endif
+ QLineEditPrivate *lineEditPrivate() const;
qreal m_opacity;
};
@@ -116,6 +117,13 @@ public:
};
typedef QVector<SideWidgetEntry> SideWidgetEntryList;
+ struct SideWidgetParameters {
+ int iconSize;
+ int widgetWidth;
+ int widgetHeight;
+ int margin;
+ };
+
QLineEditPrivate()
: control(0), frame(1), contextMenuEnabled(1), cursorVisible(0),
dragEnabled(0), clickCausedFocus(0), hscroll(0), vscroll(0),
@@ -206,7 +214,7 @@ public:
QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0);
void removeAction(QAction *action);
- QSize iconSize() const;
+ SideWidgetParameters sideWidgetParameters() const;
QIcon clearButtonIcon() const;
void setClearButtonEnabled(bool enabled);
void positionSideWidgets();
@@ -227,7 +235,6 @@ private:
SideWidgetEntryList leadingSideWidgets;
SideWidgetEntryList trailingSideWidgets;
int lastTextSize;
- mutable QSize m_iconSize;
};
Q_DECLARE_TYPEINFO(QLineEditPrivate::SideWidgetEntry, Q_PRIMITIVE_TYPE);
@@ -238,18 +245,29 @@ static bool isSideWidgetVisible(const QLineEditPrivate::SideWidgetEntry &e)
inline int QLineEditPrivate::effectiveLeftTextMargin() const
{
- return leftTextMargin + (QLineEditIconButton::IconMargin + iconSize().width())
- * int(std::count_if(leftSideWidgetList().constBegin(), leftSideWidgetList().constEnd(),
- isSideWidgetVisible));
+ int result = leftTextMargin;
+ if (!leftSideWidgetList().isEmpty()) {
+ const SideWidgetParameters p = sideWidgetParameters();
+ result += (p.margin + p.widgetWidth)
+ * int(std::count_if(leftSideWidgetList().constBegin(), leftSideWidgetList().constEnd(),
+ isSideWidgetVisible));
+ }
+ return result;
}
inline int QLineEditPrivate::effectiveRightTextMargin() const
{
- return rightTextMargin + (QLineEditIconButton::IconMargin + iconSize().width())
- * int(std::count_if(rightSideWidgetList().constBegin(), rightSideWidgetList().constEnd(),
- isSideWidgetVisible));
+ int result = rightTextMargin;
+ if (!rightSideWidgetList().isEmpty()) {
+ const SideWidgetParameters p = sideWidgetParameters();
+ result += (p.margin + p.widgetWidth)
+ * int(std::count_if(rightSideWidgetList().constBegin(), rightSideWidgetList().constEnd(),
+ isSideWidgetVisible));
+ }
+ return result;
}
+
#endif // QT_NO_LINEEDIT
QT_END_NAMESPACE