summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qlineedit_p.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-02-16 12:41:11 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-22 09:25:00 +0000
commitb657496a0ba326af0688e9935069139c002849cf (patch)
tree68cd9298778771e43955125720dddaf395a783d5 /src/widgets/widgets/qlineedit_p.cpp
parenta125b2c4c744b8f5b9136170db66840eeaf1f278 (diff)
QLineEdit: Use High DPI pixmap for clear button.
Add a 32x32-pixmap to the style and factor out a function from QStyle::standardIcon() to assemble the icon. The 32x32 pixmap may also be used for the 16x16 case with devicePixelRatio=2. Change QLineEditIconButton to use QStyle::standardIcon() instead of QStyle::standardPixmap passing the QWindow to obtain the correct pixmap from the icon. Task-number: QTBUG-49374 Change-Id: I9895230f66911752cc13b7212609141610df0977 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/widgets/widgets/qlineedit_p.cpp')
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index ff4d0fec47..ff80c45c9a 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -317,14 +317,17 @@ QLineEditIconButton::QLineEditIconButton(QWidget *parent)
void QLineEditIconButton::paintEvent(QPaintEvent *)
{
QPainter painter(this);
+ QWindow *window = Q_NULLPTR;
+ if (const QWidget *nativeParent = nativeParentWidget())
+ window = nativeParent->windowHandle();
// Note isDown should really use the active state but in most styles
// this has no proper feedback
QIcon::Mode state = QIcon::Disabled;
if (isEnabled())
state = isDown() ? QIcon::Selected : QIcon::Normal;
- const QPixmap iconPixmap = icon().pixmap(QSize(IconButtonSize, IconButtonSize),
- state, QIcon::Off);
- QRect pixmapRect = QRect(QPoint(0, 0), iconPixmap.size() / iconPixmap.devicePixelRatio());
+ const QSize iconSize(IconButtonSize, IconButtonSize);
+ const QPixmap iconPixmap = icon().pixmap(window, iconSize, state, QIcon::Off);
+ QRect pixmapRect = QRect(QPoint(0, 0), iconSize);
pixmapRect.moveCenter(rect().center());
painter.setOpacity(m_opacity);
painter.drawPixmap(pixmapRect, iconPixmap);
@@ -416,7 +419,7 @@ QIcon QLineEditPrivate::clearButtonIcon() const
Q_Q(const QLineEdit);
QStyleOptionFrame styleOption;
q->initStyleOption(&styleOption);
- return QIcon(q->style()->standardPixmap(QStyle::SP_LineEditClearButton, &styleOption, q));
+ return q->style()->standardIcon(QStyle::SP_LineEditClearButton, &styleOption, q);
}
void QLineEditPrivate::setClearButtonEnabled(bool enabled)