forked from qt-creator/qt-creator
QmlProfiler: Use Flickable's pixelAligned property
This is much cleaner than manually casting contentX and contentWidth to int. Also, it actually forwards the int-aligned dimensions to the TimelineRenderer. Change-Id: I7dad8eeabf1f3b70c5e725a82a2926b3db6f1b16 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
This commit is contained in:
@@ -98,7 +98,6 @@ Rectangle {
|
|||||||
function clear() {
|
function clear() {
|
||||||
flick.contentY = 0;
|
flick.contentY = 0;
|
||||||
flick.contentX = 0;
|
flick.contentX = 0;
|
||||||
flick.contentWidth = 0;
|
|
||||||
timelineView.clearChildren();
|
timelineView.clearChildren();
|
||||||
rangeDetails.hide();
|
rangeDetails.hide();
|
||||||
selectionRangeMode = false;
|
selectionRangeMode = false;
|
||||||
@@ -353,9 +352,9 @@ Rectangle {
|
|||||||
Flickable {
|
Flickable {
|
||||||
id: flick
|
id: flick
|
||||||
contentHeight: categoryContent.height
|
contentHeight: categoryContent.height
|
||||||
contentWidth: zoomControl.windowDuration * width / Math.max(1, zoomControl.rangeDuration)
|
|
||||||
flickableDirection: Flickable.HorizontalAndVerticalFlick
|
flickableDirection: Flickable.HorizontalAndVerticalFlick
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
pixelAligned: true
|
||||||
|
|
||||||
// ScrollView will try to deinteractivate it. We don't want that
|
// ScrollView will try to deinteractivate it. We don't want that
|
||||||
// as the horizontal flickable is interactive, too. We do occasionally
|
// as the horizontal flickable is interactive, too. We do occasionally
|
||||||
@@ -365,21 +364,21 @@ Rectangle {
|
|||||||
onStayInteractiveChanged: interactive = stayInteractive
|
onStayInteractiveChanged: interactive = stayInteractive
|
||||||
|
|
||||||
property bool recursionGuard: false
|
property bool recursionGuard: false
|
||||||
property int intX: contentX
|
|
||||||
property int intWidth: scroller.width
|
|
||||||
|
|
||||||
// Update the zoom control on srolling.
|
// Update the zoom control on srolling.
|
||||||
onIntXChanged: {
|
onContentXChanged: {
|
||||||
if (recursionGuard)
|
if (recursionGuard)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
recursionGuard = true;
|
recursionGuard = true;
|
||||||
|
|
||||||
var newStartTime = intX * zoomControl.rangeDuration / intWidth +
|
var newStartTime = contentX * zoomControl.rangeDuration / scroller.width +
|
||||||
zoomControl.windowStart;
|
|
||||||
if (Math.abs(newStartTime - zoomControl.rangeStart) >= 1) {
|
|
||||||
var newEndTime = (intX + intWidth) * zoomControl.rangeDuration / intWidth +
|
|
||||||
zoomControl.windowStart;
|
zoomControl.windowStart;
|
||||||
|
if (isFinite(newStartTime) && Math.abs(newStartTime - zoomControl.rangeStart) >= 1) {
|
||||||
|
var newEndTime = (contentX + scroller.width) * zoomControl.rangeDuration /
|
||||||
|
scroller.width + zoomControl.windowStart;
|
||||||
|
if (isFinite(newEndTime))
|
||||||
zoomControl.setRange(newStartTime, newEndTime);
|
zoomControl.setRange(newStartTime, newEndTime);
|
||||||
}
|
}
|
||||||
recursionGuard = false;
|
recursionGuard = false;
|
||||||
@@ -389,19 +388,17 @@ Rectangle {
|
|||||||
function updateWindow() {
|
function updateWindow() {
|
||||||
if (recursionGuard || zoomControl.rangeDuration <= 0)
|
if (recursionGuard || zoomControl.rangeDuration <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
recursionGuard = true;
|
recursionGuard = true;
|
||||||
|
|
||||||
// This triggers an unwanted automatic change in contentX. We ignore that by
|
var newWidth = zoomControl.windowDuration * scroller.width /
|
||||||
// checking recursionGuard in this function and in updateZoomControl.
|
|
||||||
flick.contentWidth = zoomControl.windowDuration * intWidth /
|
|
||||||
zoomControl.rangeDuration;
|
zoomControl.rangeDuration;
|
||||||
|
if (isFinite(newWidth) && Math.abs(newWidth - contentWidth) >= 1)
|
||||||
|
contentWidth = newWidth;
|
||||||
|
|
||||||
var newStartX = (zoomControl.rangeStart - zoomControl.windowStart) * intWidth /
|
var newStartX = (zoomControl.rangeStart - zoomControl.windowStart) * scroller.width /
|
||||||
zoomControl.rangeDuration;
|
zoomControl.rangeDuration;
|
||||||
|
if (isFinite(newStartX) && Math.abs(newStartX - contentX) >= 1)
|
||||||
if (isFinite(newStartX) && Math.abs(newStartX - flick.contentX) >= 1)
|
contentX = newStartX;
|
||||||
flick.contentX = newStartX;
|
|
||||||
|
|
||||||
recursionGuard = false;
|
recursionGuard = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,11 +63,14 @@ Canvas {
|
|||||||
function updateRange() {
|
function updateRange() {
|
||||||
if (recursionGuard)
|
if (recursionGuard)
|
||||||
return;
|
return;
|
||||||
var newStartTime = Math.round(rangeMover.rangeLeft * zoomControl.traceDuration / width) +
|
recursionGuard = true;
|
||||||
|
var newStartTime = rangeMover.rangeLeft * zoomControl.traceDuration / width +
|
||||||
zoomControl.traceStart;
|
zoomControl.traceStart;
|
||||||
var newEndTime = Math.max(Math.round(rangeMover.rangeRight * zoomControl.traceDuration /
|
var newEndTime = rangeMover.rangeRight * zoomControl.traceDuration / width +
|
||||||
width) + zoomControl.traceStart, newStartTime + 500);
|
zoomControl.traceStart;
|
||||||
|
if (isFinite(newStartTime) && isFinite(newEndTime) && newEndTime - newStartTime > 500)
|
||||||
zoomControl.setRange(newStartTime, newEndTime);
|
zoomControl.setRange(newStartTime, newEndTime);
|
||||||
|
recursionGuard = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clamp(val, min, max) {
|
function clamp(val, min, max) {
|
||||||
@@ -78,6 +81,8 @@ Canvas {
|
|||||||
Connections {
|
Connections {
|
||||||
target: zoomControl
|
target: zoomControl
|
||||||
onRangeChanged: {
|
onRangeChanged: {
|
||||||
|
if (recursionGuard)
|
||||||
|
return;
|
||||||
recursionGuard = true;
|
recursionGuard = true;
|
||||||
var newRangeX = (zoomControl.rangeStart - zoomControl.traceStart) * width /
|
var newRangeX = (zoomControl.rangeStart - zoomControl.traceStart) * width /
|
||||||
zoomControl.traceDuration;
|
zoomControl.traceDuration;
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ RangeMover {
|
|||||||
target: zoomControl
|
target: zoomControl
|
||||||
onRangeChanged: {
|
onRangeChanged: {
|
||||||
var oldTimePerPixel = selectionRange.viewTimePerPixel;
|
var oldTimePerPixel = selectionRange.viewTimePerPixel;
|
||||||
selectionRange.viewTimePerPixel = zoomControl.rangeDuration / flick.intWidth;
|
selectionRange.viewTimePerPixel = zoomControl.rangeDuration / scroller.width;
|
||||||
if (creationState === 3 && oldTimePerPixel != selectionRange.viewTimePerPixel) {
|
if (creationState === 3 && oldTimePerPixel != selectionRange.viewTimePerPixel) {
|
||||||
var newWidth = rangeWidth * oldTimePerPixel / viewTimePerPixel;
|
var newWidth = rangeWidth * oldTimePerPixel / viewTimePerPixel;
|
||||||
rangeLeft = rangeLeft * oldTimePerPixel / viewTimePerPixel;
|
rangeLeft = rangeLeft * oldTimePerPixel / viewTimePerPixel;
|
||||||
|
|||||||
Reference in New Issue
Block a user