Don't draw focus frame if widget has style rules that affect border
Skip drawing the focus ring if the widget has a custom styled border, custom focus ring, or any rule that affects the border. For QPushButton, if the style rule has a background set, the bevel will be drawn in the Windows style. Skip drawing the Mac focus frame in that case too. Fixes: QTBUG-93032 Change-Id: I7c4d4bf6f6ce7bbcd17cd620586c5efa44f2b8d6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 05f7dd5ead5927ef7b3301380b81d7194d9e0593) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
5ee6a0ddda
commit
be6fce0962
@ -123,6 +123,9 @@
|
||||
#if QT_CONFIG(toolbar)
|
||||
#include <QtWidgets/qtoolbar.h>
|
||||
#endif
|
||||
#if QT_CONFIG(pushbutton)
|
||||
#include <QtWidgets/qpushbutton.h>
|
||||
#endif
|
||||
|
||||
#include <QtGui/qpainterpath.h>
|
||||
#include <QtGui/qscreen.h>
|
||||
@ -2943,6 +2946,12 @@ void QStyleSheetStyle::polish(QWidget *w)
|
||||
if (!rule.hasBackground() || rule.background()->isTransparent() || rule.hasBox()
|
||||
|| (!rule.hasNativeBorder() && !rule.border()->isOpaque()))
|
||||
w->setAttribute(Qt::WA_OpaquePaintEvent, false);
|
||||
if (rule.hasBox() || !rule.hasNativeBorder()
|
||||
#if QT_CONFIG(pushbutton)
|
||||
|| (qobject_cast<QPushButton *>(w))
|
||||
#endif
|
||||
)
|
||||
w->setAttribute(Qt::WA_MacShowFocusRect, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user