diff options
author | Doris Verria <doris.verria@qt.io> | 2020-11-17 15:42:55 +0100 |
---|---|---|
committer | Doris Verria <doris.verria@qt.io> | 2020-12-21 12:33:15 +0100 |
commit | c6379e34993370e7e2208b51be384b738ce35817 (patch) | |
tree | f9aad229ae6827d9ab3c4afe5230ec5bf6286fae /src/widgets | |
parent | b770b7517d30dd17d1096a0bb434677a2b3ff630 (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.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qpushbutton_p.h | 2 |
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(); |