diff --git a/src/libs/timeline/qml/CategoryLabel.qml b/src/libs/timeline/qml/CategoryLabel.qml
index 4958402333c..d5ab08400e6 100644
--- a/src/libs/timeline/qml/CategoryLabel.qml
+++ b/src/libs/timeline/qml/CategoryLabel.qml
@@ -55,8 +55,6 @@ Item {
signal selectNextBySelectionId(int selectionId)
signal selectPrevBySelectionId(int selectionId)
- readonly property int dragHeight: 5
-
property bool reverseSelect: false
visible: model && (mockup || (!model.hidden && !model.empty))
@@ -111,57 +109,36 @@ Item {
visible: expanded
Repeater {
model: labels.length
- Button {
- id: button
- property string labelText: labels[index].description ? labels[index].description :
- qsTr("[unknown]")
+ Loader {
+ id: loader
+ asynchronous: dragOffset - draggerParent.contentY + y + txt.height >
+ draggerParent.height
+ active: expanded
width: labelContainer.width
height: column.parentModel ? column.parentModel.rowHeight(index + 1) : 0
- action: Action {
- onTriggered: {
- if (reverseSelect)
- labelContainer.selectPrevBySelectionId(labels[index].id);
- else
- labelContainer.selectNextBySelectionId(labels[index].id);
- }
- tooltip: button.labelText + (labels[index].displayName ?
- (" (" + labels[index].displayName + ")") : "")
- }
-
- style: ButtonStyle {
- background: Rectangle {
- border.width: 1
- border.color: "#c8c8c8"
- color: "#eaeaea"
- }
- label: Text {
- text: button.labelText
- textFormat: Text.PlainText
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignLeft
- elide: Text.ElideRight
- renderType: Text.NativeRendering
+ onAsynchronousChanged: {
+ if (!asynchronous && active && status !== Loader.Ready) {
+ // Trigger a synchronous reload to avoid glitches
+ var component = sourceComponent;
+ sourceComponent = undefined;
+ sourceComponent = component;
}
}
- MouseArea {
- hoverEnabled: true
- property bool resizing: false
- onPressed: resizing = true
- onReleased: resizing = false
- height: dragHeight
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- cursorShape: Qt.SizeVerCursor
-
- onMouseYChanged: {
- if (resizing) {
- column.parentModel.setExpandedRowHeight(index + 1, y + mouseY);
- parent.height = column.parentModel.rowHeight(index + 1);
+ sourceComponent: RowLabel {
+ label: labels[index];
+ onSelectBySelectionId: {
+ if (labelContainer.reverseSelect) {
+ labelContainer.selectPrevBySelectionId(label.id);
+ } else {
+ labelContainer.selectNextBySelectionId(label.id);
}
}
+ onSetRowHeight: {
+ column.parentModel.setExpandedRowHeight(index + 1, newHeight);
+ loader.height = column.parentModel.rowHeight(index + 1);
+ }
}
}
}
diff --git a/src/libs/timeline/qml/RowLabel.qml b/src/libs/timeline/qml/RowLabel.qml
new file mode 100644
index 00000000000..4f2afd80fff
--- /dev/null
+++ b/src/libs/timeline/qml/RowLabel.qml
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms and
+** conditions see http://www.qt.io/terms-conditions. For further information
+** use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Controls 1.2
+import QtQuick.Controls.Styles 1.2
+
+Button {
+ id: button
+ property var label
+
+ readonly property int dragHeight: 5
+
+ signal selectBySelectionId()
+ signal setRowHeight(int newHeight)
+
+ property string labelText: label.description ? label.description : qsTr("[unknown]")
+ action: Action {
+ onTriggered: button.selectBySelectionId();
+ tooltip: button.labelText + (label.displayName ? (" (" + label.displayName + ")") : "")
+ }
+
+ style: ButtonStyle {
+ background: Rectangle {
+ border.width: 1
+ border.color: "#c8c8c8"
+ color: "#eaeaea"
+ }
+ label: Text {
+ text: button.labelText
+ textFormat: Text.PlainText
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignLeft
+ elide: Text.ElideRight
+ renderType: Text.NativeRendering
+ }
+ }
+ MouseArea {
+ hoverEnabled: true
+ property bool resizing: false
+ onPressed: resizing = true
+ onReleased: resizing = false
+
+ height: dragHeight
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ cursorShape: Qt.SizeVerCursor
+
+ onMouseYChanged: {
+ if (resizing)
+ button.setRowHeight(y + mouseY)
+ }
+ }
+}
+
diff --git a/src/libs/timeline/qml/timeline.qrc b/src/libs/timeline/qml/timeline.qrc
index f0eb2afaa4f..4dc7e8c5a7f 100644
--- a/src/libs/timeline/qml/timeline.qrc
+++ b/src/libs/timeline/qml/timeline.qrc
@@ -32,5 +32,6 @@
notes.frag
TimelineLabels.qml
TimelineContent.qml
+ RowLabel.qml