Tracing: Update selection range when timeline width changes

The viewTimePerPixel needs to be adapted then.

Change-Id: Ie057c780cc75099f1b9df18c79c5e133411ef8e6
Fixes: QTCREATORBUG-22094
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Ulf Hermann
2019-04-09 13:47:41 +02:00
parent fb1ddb53c8
commit 3b30353e4b

View File

@@ -55,19 +55,7 @@ Rectangle {
onRangeChanged: { onRangeChanged: {
zoomSliderToolBar.updateZoomLevel(); zoomSliderToolBar.updateZoomLevel();
content.scroll(); content.scroll();
selectionRange.update();
// If you select something in the main view and then resize the current range by some
// other means, the selection should stay where it was.
var oldTimePerPixel = selectionRange.viewTimePerPixel;
selectionRange.viewTimePerPixel = zoomControl.rangeDuration / content.width;
if (selectionRange.creationState === selectionRange.creationFinished &&
oldTimePerPixel != selectionRange.viewTimePerPixel) {
var newWidth = selectionRange.rangeWidth * oldTimePerPixel /
selectionRange.viewTimePerPixel;
selectionRange.rangeLeft = selectionRange.rangeLeft * oldTimePerPixel /
selectionRange.viewTimePerPixel;
selectionRange.rangeRight = selectionRange.rangeLeft + newWidth;
}
} }
onWindowChanged: { onWindowChanged: {
content.scroll(); content.scroll();
@@ -216,6 +204,8 @@ Rectangle {
buttonsBar.updateLockButton(selectionLocked); buttonsBar.updateLockButton(selectionLocked);
} }
onWidthChanged: selectionRange.update();
onPropagateSelection: { onPropagateSelection: {
if (lockItemSelection || (newModel === selectedModel && newItem === selectedItem)) if (lockItemSelection || (newModel === selectedModel && newItem === selectedItem))
return; return;
@@ -314,6 +304,18 @@ Rectangle {
root.selectionRangeMode = false; root.selectionRangeMode = false;
} }
function update() {
// If you select something in the main view and then resize the current range by some
// other means, the selection should stay where it was.
var oldTimePerPixel = viewTimePerPixel;
viewTimePerPixel = zoomControl.rangeDuration / content.width;
if (creationState === creationFinished && oldTimePerPixel != viewTimePerPixel) {
var newWidth = rangeWidth * oldTimePerPixel / viewTimePerPixel;
rangeLeft = rangeLeft * oldTimePerPixel / viewTimePerPixel;
rangeRight = rangeLeft + newWidth;
}
}
} }
} }