From 55523dff96d6b4e6055fbe7d89b98f2af29875a0 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Apr 2014 13:01:18 +0200 Subject: [PATCH] Fix 'clear' button position and size on HiDPI In Locator, find tool bar, options filter etc. Change-Id: I7f3b0b1ab22e00250dd933e3ac7a4c080eaeebe0 Reviewed-by: Erik Verbruggen --- src/libs/utils/fancylineedit.cpp | 19 ++++++++++++++++--- src/libs/utils/fancylineedit.h | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp index dcb1cb834f3..7dfb82bda7c 100644 --- a/src/libs/utils/fancylineedit.cpp +++ b/src/libs/utils/fancylineedit.cpp @@ -216,8 +216,8 @@ void FancyLineEdit::updateMargins() Side realLeft = (leftToRight ? Left : Right); Side realRight = (leftToRight ? Right : Left); - int leftMargin = d->m_iconbutton[realLeft]->pixmap().width() + 8; - int rightMargin = d->m_iconbutton[realRight]->pixmap().width() + 8; + int leftMargin = d->m_iconbutton[realLeft]->sizeHint().width() + 8; + int rightMargin = d->m_iconbutton[realRight]->sizeHint().width() + 8; // Note KDE does not reserve space for the highlight color if (style()->inherits("OxygenStyle")) { leftMargin = qMax(24, leftMargin); @@ -486,8 +486,12 @@ IconButton::IconButton(QWidget *parent) void IconButton::paintEvent(QPaintEvent *) { + qreal pixmapRatio = 1.0; +#if QT_VERSION >= 0x050100 + pixmapRatio = m_pixmap.devicePixelRatio(); +#endif QStylePainter painter(this); - QRect pixmapRect = QRect(0, 0, m_pixmap.width(), m_pixmap.height()); + QRect pixmapRect = QRect(0, 0, m_pixmap.width()/pixmapRatio, m_pixmap.height()/pixmapRatio); pixmapRect.moveCenter(rect().center()); if (m_autoHide) @@ -523,6 +527,15 @@ void IconButton::animateShow(bool visible) } } +QSize IconButton::sizeHint() const +{ + qreal pixmapRatio = 1.0; +#if QT_VERSION >= 0x050100 + pixmapRatio = m_pixmap.devicePixelRatio(); +#endif + return QSize(m_pixmap.width()/pixmapRatio, m_pixmap.height()/pixmapRatio); +} + void IconButton::keyPressEvent(QKeyEvent *ke) { QAbstractButton::keyPressEvent(ke); diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h index a03331fba3f..2b533c2575e 100644 --- a/src/libs/utils/fancylineedit.h +++ b/src/libs/utils/fancylineedit.h @@ -61,6 +61,8 @@ public: void setAutoHide(bool hide) { m_autoHide = hide; } bool hasAutoHide() const { return m_autoHide; } + QSize sizeHint() const; + protected: void keyPressEvent(QKeyEvent *ke); void keyReleaseEvent(QKeyEvent *ke);