From e02ebcdb0b10b1c9f077d813c08d83e0d17ca6b5 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 30 Oct 2017 12:38:36 +0100 Subject: Optimize CheckBox, Switch, and RadioButton Add an internal CheckLabel helper that simply initializes a few QQuickText properties with defaults that are suitable for CheckBox, Switch, and RadioButton. This gives a 10% boost on desktop in debug mode, and a 5% boost on a TX1 in release mode. Change-Id: I82fead9ca22b6aa74f24924d240c924b2a42a912 Reviewed-by: Mitch Curtis --- src/imports/controls/RadioButton.qml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src/imports/controls/RadioButton.qml') diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index c00360cf..2ea9dbfa 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -58,16 +58,12 @@ T.RadioButton { control: control } - contentItem: Text { + contentItem: CheckLabel { leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 text: control.text font: control.font color: control.palette.windowText - elide: Text.ElideRight - visible: control.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter } } -- cgit v1.2.3 From 1350b91aaf9a343d721ea085fd924812e518ccbd Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 31 Oct 2017 14:55:34 +0100 Subject: Default: merge RadioIndicator back to RadioButton & RadioDelegate See the previous commit (CheckIndicator) for more details. Before: running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_radiobutton.qml [...] Average: 91.6 frames; using samples; MedianAll=91; StdDev=1.51658, CoV=0.0165565 After: running: qmlbench/benchmarks/auto/creation/quick.controls2/delegates_radiobutton.qml [...] Average: 95.8 frames; using samples; MedianAll=96; StdDev=2.04939, CoV=0.0213924 Change-Id: Ic185241767d0b9422e86919356e3155e00803e56 Reviewed-by: Mitch Curtis --- src/imports/controls/RadioButton.qml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/imports/controls/RadioButton.qml') diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index 2ea9dbfa..a9f63652 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -52,10 +52,28 @@ T.RadioButton { padding: 6 spacing: 6 - indicator: RadioIndicator { + // keep in sync with RadioDelegate.qml (shared RadioIndicator.qml was removed for performance reasons) + indicator: Rectangle { + implicitWidth: 28 + implicitHeight: 28 + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 y: control.topPadding + (control.availableHeight - height) / 2 - control: control + + radius: width / 2 + color: control.down ? control.palette.light : control.palette.base + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.palette.mid + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.palette.text + visible: control.checked + } } contentItem: CheckLabel { -- cgit v1.2.3