diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index c97814e2ed2667169ce29ebeae741742e0a20fad..3455e262a56afedecd7c3b8c130c5cc43be6470c 100644 --- a/src/plugins/qmlprofiler/qml/MainView.qml +++ b/src/plugins/qmlprofiler/qml/MainView.qml @@ -70,7 +70,12 @@ Rectangle { mainviewTimePerPixel = Math.abs(endTime - startTime) / root.width; backgroundMarks.updateMarks(startTime, endTime); - view.updateFlickRange(startTime, endTime); + view.startTime = startTime; + view.endTime = endTime; + view.updateWindow(); + } + onWindowChanged: { + view.updateWindow(); } } @@ -250,7 +255,7 @@ Rectangle { onWidthChanged: { var duration = Math.abs(zoomControl.endTime() - zoomControl.startTime()); if (duration > 0) - contentWidth = qmlProfilerModelProxy.traceDuration() * width / duration; + contentWidth = zoomControl.windowLength() * width / duration; } // ***** child items @@ -293,33 +298,29 @@ Rectangle { return; var newStartTime = Math.round(flick.contentX * (endTime - startTime) / flick.width) + - qmlProfilerModelProxy.traceStartTime(); + zoomControl.windowStart(); if (Math.abs(newStartTime - startTime) > 1) { var newEndTime = Math.round((flick.contentX + flick.width) * (endTime - startTime) / - flick.width) + - qmlProfilerModelProxy.traceStartTime(); + flick.width) + zoomControl.windowStart(); zoomControl.setRange(newStartTime, newEndTime); } } - function updateFlickRange(start, end) { - var duration = end - start; - if (recursionGuard || duration <= 0 || (start === startTime && end === endTime)) + function updateWindow() { + var duration = zoomControl.duration(); + if (recursionGuard || duration <= 0) return; recursionGuard = true; - startTime = start; - endTime = end; - if (!flick.flickingHorizontally) { + if (!flick.movingHorizontally) { // This triggers an unwanted automatic change in contentX. We ignore that by // checking recursionGuard in this function and in updateZoomControl. - flick.contentWidth = qmlProfilerModelProxy.traceDuration() * flick.width / - duration; + flick.contentWidth = zoomControl.windowLength() * flick.width / duration; - var newStartX = (startTime - qmlProfilerModelProxy.traceStartTime()) * - flick.width / duration; + var newStartX = (startTime - zoomControl.windowStart()) * flick.width / + duration; if (isFinite(newStartX) && Math.abs(newStartX - flick.contentX) >= 1) flick.contentX = newStartX; @@ -418,7 +419,9 @@ Rectangle { function updateZoomLevel() { zoomSlider.externalUpdate = true; - zoomSlider.value = Math.pow((view.endTime - view.startTime) / qmlProfilerModelProxy.traceDuration(), 1 / zoomSlider.exponent) * zoomSlider.maximumValue; + zoomSlider.value = Math.pow((view.endTime - view.startTime) / + zoomControl.windowLength(), + 1 / zoomSlider.exponent) * zoomSlider.maximumValue; } @@ -434,7 +437,7 @@ Rectangle { property int minWindowLength: 1e5 // 0.1 ms onValueChanged: { - if (externalUpdate || qmlProfilerModelProxy.traceEndTime() <= qmlProfilerModelProxy.traceStartTime()) { + if (externalUpdate || zoomControl.windowEnd() <= zoomControl.windowStart()) { // Zoom range is independently updated. We shouldn't mess // with it here as otherwise we might introduce rounding // or arithmetic errors. @@ -443,7 +446,7 @@ Rectangle { } var windowLength = Math.max( - Math.pow(value / maximumValue, exponent) * qmlProfilerModelProxy.traceDuration(), + Math.pow(value / maximumValue, exponent) * zoomControl.windowLength(), minWindowLength); var fixedPoint = (view.startTime + view.endTime) / 2; @@ -454,7 +457,7 @@ Rectangle { fixedPoint = newFixedPoint; } - var startTime = Math.max(qmlProfilerModelProxy.traceStartTime(), fixedPoint - windowLength / 2) + var startTime = Math.max(zoomControl.windowStart(), fixedPoint - windowLength / 2) zoomControl.setRange(startTime, startTime + windowLength); } } diff --git a/src/plugins/qmlprofiler/qml/SelectionRange.qml b/src/plugins/qmlprofiler/qml/SelectionRange.qml index b54d0d3eeeed59dd18479092deebb4727bb0c63e..7931bdea3a5ddf5fb57c16eb37f91997b6e49013 100644 --- a/src/plugins/qmlprofiler/qml/SelectionRange.qml +++ b/src/plugins/qmlprofiler/qml/SelectionRange.qml @@ -38,7 +38,7 @@ RangeMover { property string endTimeString: detailedPrintTime(startTime+duration) property string durationString: detailedPrintTime(duration) - property double startTime: getLeft() * viewTimePerPixel + qmlProfilerModelProxy.traceStartTime() + property double startTime: getLeft() * viewTimePerPixel + zoomControl.windowStart() property double duration: Math.max(getWidth() * viewTimePerPixel, 500) property double viewTimePerPixel: 1 property double creationReference : 0