From f30cbf971147e633666c17ba80795b7cb3561a2f Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 18 Jun 2014 15:47:20 +0200 Subject: [PATCH] QmlProfiler: allow interactive resizing of rows in timeline Task-number: QTCREATORBUG-12337 Change-Id: Ib9ddb128605831841023bb3cc9aed758ed171de9 Reviewed-by: Kai Koehne --- src/plugins/qmlprofiler/qml/CategoryLabel.qml | 14 ++++++++++++++ src/plugins/qmlprofiler/timelinerenderer.cpp | 8 ++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmlprofiler/qml/CategoryLabel.qml b/src/plugins/qmlprofiler/qml/CategoryLabel.qml index cf4588c6b75..872483bb8e7 100644 --- a/src/plugins/qmlprofiler/qml/CategoryLabel.qml +++ b/src/plugins/qmlprofiler/qml/CategoryLabel.qml @@ -39,6 +39,8 @@ Item { property var extdescriptions: [] property var eventIds: [] + readonly property int dragHeight: 5 + function trigger(i) { return i * bindingTrigger * bindingTrigger; } @@ -116,16 +118,28 @@ Item { verticalAlignment: Text.AlignVCenter } MouseArea { + property bool resizing: false anchors.fill: parent hoverEnabled: true + cursorShape: (resizing || height - mouseY < dragHeight) ? Qt.SizeVerCursor : + Qt.ArrowCursor; onEntered: changeToolTip(extdescriptions[index]); onExited: changeToolTip(""); + onPressed: resizing = (height - mouseY < dragHeight); + + onReleased: resizing = false; + onClicked: { if (mouse.modifiers & Qt.ShiftModifier) view.selectPrevFromId(modelIndex,eventIds[index]); else view.selectNextFromId(modelIndex,eventIds[index]); } + + onMouseYChanged: { + if (resizing) + qmlProfilerModelProxy.setRowHeight(modelIndex, index + 1, mouseY); + } } } } diff --git a/src/plugins/qmlprofiler/timelinerenderer.cpp b/src/plugins/qmlprofiler/timelinerenderer.cpp index 518aff5f2b8..13d7462ff4f 100644 --- a/src/plugins/qmlprofiler/timelinerenderer.cpp +++ b/src/plugins/qmlprofiler/timelinerenderer.cpp @@ -53,12 +53,16 @@ TimelineRenderer::TimelineRenderer(QQuickPaintedItem *parent) : void TimelineRenderer::setProfilerModelProxy(QObject *profilerModelProxy) { - if (m_profilerModelProxy) + if (m_profilerModelProxy) { disconnect(m_profilerModelProxy, SIGNAL(expandedChanged()), this, SLOT(requestPaint())); + disconnect(m_profilerModelProxy, SIGNAL(rowHeightChanged()), this, SLOT(requestPaint())); + } m_profilerModelProxy = qobject_cast(profilerModelProxy); - if (m_profilerModelProxy) + if (m_profilerModelProxy) { connect(m_profilerModelProxy, SIGNAL(expandedChanged()), this, SLOT(requestPaint())); + connect(m_profilerModelProxy, SIGNAL(rowHeightChanged()), this, SLOT(requestPaint())); + } emit profilerModelProxyChanged(m_profilerModelProxy); }