From c6379e34993370e7e2208b51be384b738ce35817 Mon Sep 17 00:00:00 2001 From: Doris Verria Date: Tue, 17 Nov 2020 15:42:55 +0100 Subject: 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 --- src/widgets/widgets/qpushbutton.cpp | 7 +++++++ src/widgets/widgets/qpushbutton_p.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src/widgets') 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(); -- cgit v1.2.3