From 0ea96f1896a13c8e01b4ee9d45439565e19eb18a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 24 Sep 2020 14:22:32 +0200 Subject: NativeStyle: add focusFrameRadius to QStyle To be able to show a focus frame around a control from QML, we need to know the control's geometry and radius. For the geometry we can use the already existing layout rect. But for the latter we need to add focusFrameRadius enums to QStyle using the already existing pixel metric function. Change-Id: I45619194766cccbf824d93073a4dcea3a0893fbe Reviewed-by: Mitch Curtis --- .../nativestyle/qstyle/mac/qquickmacstyle_mac.mm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/imports/nativestyle/qstyle/mac/qquickmacstyle_mac.mm') diff --git a/src/imports/nativestyle/qstyle/mac/qquickmacstyle_mac.mm b/src/imports/nativestyle/qstyle/mac/qquickmacstyle_mac.mm index e1aba599..2673e706 100644 --- a/src/imports/nativestyle/qstyle/mac/qquickmacstyle_mac.mm +++ b/src/imports/nativestyle/qstyle/mac/qquickmacstyle_mac.mm @@ -2223,6 +2223,28 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt) const ret = [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay ? pixelMetric(PM_ScrollBarExtent, opt) : 0; break; + case PM_PushButtonFocusFrameRadius: + ret = LargeSmallMini(opt, 8, 7, 5); + break; + case PM_CheckBoxFocusFrameRadius: + ret = LargeSmallMini(opt, 6, 5, 4); + break; + case PM_ComboBoxFocusFrameRadius: + ret = LargeSmallMini(opt, 8, 7, 4); + break; + case PM_RadioButtonFocusFrameRadius: + ret = 10; + break; + case PM_SliderFocusFrameRadius: + if (const QStyleOptionSlider *sliderOpt = qstyleoption_cast(opt)) + ret = sliderOpt->tickPosition == QStyleOptionSlider::NoTicks ? 10 : 3; + break; + case PM_DialFocusFrameRadius: + case PM_SpinBoxFocusFrameRadius: + case PM_TextAreaFocusFrameRadius: + case PM_TextFieldFocusFrameRadius: + ret = 3; + break; default: ret = QCommonStyle::pixelMetric(metric, opt); break; -- cgit v1.2.3