aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls/DelayButton.qml
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-12-19 17:00:15 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2017-12-21 10:00:10 +0000
commit1e33020fc02b56001d805d3d66badd41480b746d (patch)
treeb2545765e805b5d97b610ccb4acb33192d7b2a66 /src/imports/controls/DelayButton.qml
parentda27cace5aa65c1972b746d9fc1d4507a04b5f93 (diff)
Default: eliminate internal IDs in DelayButton
An ID in the internal Text element prevented deferred execution for the whole content item. The ID was used for two reasons. First of all, it was used to propagate implicit size from the Text element to the root of the content item. Secondly, it was used to calculate clip areas to provide the same text in two different colors. This patch provides two internal C++ helpers, ItemGroup and ClippedText, that provide these functionalities without the need of using IDs in QML. At the same time we got rid of two wrapper Items and simplified some QML bindings, which results to a nice boost (18->22) in qmlbench on TX1. Task-number: QTBUG-65341 Change-Id: Icf9c09356cf5c0ed641bde537bee7291bd260057 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls/DelayButton.qml')
-rw-r--r--src/imports/controls/DelayButton.qml62
1 files changed, 21 insertions, 41 deletions
diff --git a/src/imports/controls/DelayButton.qml b/src/imports/controls/DelayButton.qml
index 4a569fcf..133b2786 100644
--- a/src/imports/controls/DelayButton.qml
+++ b/src/imports/controls/DelayButton.qml
@@ -58,55 +58,35 @@ T.DelayButton {
}
}
- contentItem: Item {
- implicitWidth: label.implicitWidth
- implicitHeight: label.implicitHeight
-
- Item {
- x: -control.leftPadding + (control.progress * control.width)
- width: (1.0 - control.progress) * control.width
- height: parent.height
-
+ contentItem: ItemGroup {
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding + control.progress * control.width
+ clipWidth: (1.0 - control.progress) * control.width
visible: control.progress < 1
- Text {
- id: label
- x: -parent.x
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- opacity: enabled ? 1 : 0.3
- color: control.visualFocus ? Default.focusColor : (control.down ? Default.textDarkColor : Default.textColor)
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ opacity: enabled ? 1 : 0.3
+ color: control.visualFocus ? Default.focusColor : (control.down ? Default.textDarkColor : Default.textColor)
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
- Item {
- x: -control.leftPadding
- width: control.progress * control.width
- height: parent.height
-
+ ClippedText {
clip: control.progress > 0
+ clipX: -control.leftPadding
+ clipWidth: control.progress * control.width
visible: control.progress > 0
- Text {
- x: control.leftPadding
- width: control.availableWidth
- height: parent.height
-
- text: control.text
- font: control.font
- opacity: enabled ? 1 : 0.3
- color: Default.textLightColor
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
+ text: control.text
+ font: control.font
+ opacity: enabled ? 1 : 0.3
+ color: Default.textLightColor
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
}
}