From 00f84cc698f8177472bfd22066d340a1adac0d0d Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 10 Nov 2015 11:37:39 +0100 Subject: [PATCH] Timeline: Properly account for out-of-bounds events If an event has to be clipped its length gets shorter ... Change-Id: Ic59abebff3e856214bbb12eca324816b4e9e740d Reviewed-by: Joerg Bornemann --- src/libs/timeline/timelineselectionrenderpass.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libs/timeline/timelineselectionrenderpass.cpp b/src/libs/timeline/timelineselectionrenderpass.cpp index 7c723eb5cfb..c5e63a5243f 100644 --- a/src/libs/timeline/timelineselectionrenderpass.cpp +++ b/src/libs/timeline/timelineselectionrenderpass.cpp @@ -102,9 +102,12 @@ TimelineRenderPass::State *TimelineSelectionRenderPass::update( top = TimelineModel::defaultRowHeight() * (row + 1) - height; } - qint64 startTime = model->startTime(selectedItem); - qint64 left = qMax(startTime - parentState->start(), (qint64)0); - qint64 width = qMin(parentState->end() - startTime, model->duration(selectedItem)); + qint64 startTime = qBound(parentState->start(), model->startTime(selectedItem), + parentState->end()); + qint64 endTime = qBound(parentState->start(), model->endTime(selectedItem), + parentState->end()); + qint64 left = startTime - parentState->start(); + qint64 width = endTime - startTime; // Construct from upper left and lower right for better precision. When constructing from // left and width the error on the left border is inherited by the right border. Like this