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 Pick-to: 5.15 6.1 Change-Id: I7c4d4bf6f6ce7bbcd17cd620586c5efa44f2b8d6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
441ff065e5
commit
05f7dd5ead
@ -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