summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2020-11-17 15:42:55 +0100
committerDoris Verria <doris.verria@qt.io>2020-12-21 12:33:15 +0100
commitc6379e34993370e7e2208b51be384b738ce35817 (patch)
treef9aad229ae6827d9ab3c4afe5230ec5bf6286fae /src/widgets
parentb770b7517d30dd17d1096a0bb434677a2b3ff630 (diff)
Make QPushButton on macOS use QFocusFrame to fix alignment problems
Alignment problems occur for pushbuttons because they appear smaller then their actual widget geometry, which is used for their alignment in layouts. To fix, shift the pushbutton's rect to the left, adjust SE_PushButtonLayoutItem accordingly and use QFocusFrame to render the focus frame ring outside the widget's paintable area. Fixes: QTBUG-89133 Fixes: QTBUG-81452 Pick-to: 5.15 6.0 Change-Id: Iee885a4fb3674d966e5ff3b5c04a0845521b2d72 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qpushbutton.cpp7
-rw-r--r--src/widgets/widgets/qpushbutton_p.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp
index 0ae74cb85b..50d7a62c50 100644
--- a/src/widgets/widgets/qpushbutton.cpp
+++ b/src/widgets/widgets/qpushbutton.cpp
@@ -599,6 +599,13 @@ void QPushButton::showMenu()
d->_q_popupPressed();
}
+void QPushButtonPrivate::init()
+{
+ Q_Q(QPushButton);
+ q->setAttribute(Qt::WA_MacShowFocusRect);
+ resetLayoutItemMargins();
+}
+
void QPushButtonPrivate::_q_popupPressed()
{
Q_Q(QPushButton);
diff --git a/src/widgets/widgets/qpushbutton_p.h b/src/widgets/widgets/qpushbutton_p.h
index e28a6d71df..2a3dfeff23 100644
--- a/src/widgets/widgets/qpushbutton_p.h
+++ b/src/widgets/widgets/qpushbutton_p.h
@@ -73,7 +73,7 @@ public:
lastAutoDefault(false)
{}
- inline void init() { resetLayoutItemMargins(); }
+ void init();
static QPushButtonPrivate* get(QPushButton *b) { return b->d_func(); }
#if QT_CONFIG(menu)
QPoint adjustedMenuPosition();