fix: PADDING_LEFT=0, tEnd uses CLIP_BUFFER for right buffer

- PADDING_LEFT=0 in all 3 components (grid aligns with clip origin)
- TempoTrackLane/WaveformLane tEnd uses CLIP_BUFFER/zoom so bars render past right edge
- TimelineRuler tEnd uses CLIP_BUFFER/zoom instead of PADDING_LEFT
This commit is contained in:
2026-07-25 11:04:51 +07:00
parent 01cd3d1867
commit 5bd61516aa
3 changed files with 16 additions and 10 deletions
+7 -7
View File
@@ -443,9 +443,9 @@ const WaveformLane = ({
const barDuration = beatDuration * 4;
const leadIn = 0;
const CLIP_BUFFER = Math.max(400, barDuration * zoom + 200);
const PADDING_LEFT = 8 / zoom;
const PADDING_LEFT = 0;
const tStart = (scrollLeftVal - leadIn * zoom) / zoom - PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth - leadIn * zoom) / zoom + PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth - leadIn * zoom) / zoom + CLIP_BUFFER / zoom;
const firstBeat = Math.floor(tStart / beatDuration) * beatDuration;
let snapDivisor = 1;
if (snapValue && snapValue !== 'free') {
@@ -1222,10 +1222,10 @@ const TimelineRuler = ({
ctx.lineTo(drawWidth, height - 0.5);
ctx.stroke();
const PADDING_LEFT = 8 / zoom;
const tStart = scrollLeftVal / zoom - PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth) / zoom + PADDING_LEFT;
const CLIP_BUFFER = 400;
const PADDING_LEFT = 0;
const tStart = scrollLeftVal / zoom - PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth) / zoom + CLIP_BUFFER / zoom;
// Draw time duration labels with drag-selection markers
const minTimePx = 60;
@@ -1305,9 +1305,9 @@ const TempoTrackLane = ({
const barDuration = beatDuration * 4;
const leadIn = propLeadIn !== undefined ? propLeadIn : 0;
const CLIP_BUFFER = Math.max(400, barDuration * zoom + 200);
const PADDING_LEFT = 8 / zoom;
const PADDING_LEFT = 0;
const tStart = (scrollLeftVal - leadIn * zoom) / zoom - PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth - leadIn * zoom) / zoom + PADDING_LEFT;
const tEnd = (scrollLeftVal + drawWidth - leadIn * zoom) / zoom + CLIP_BUFFER / zoom;
const firstBeat = Math.floor(tStart / beatDuration) * beatDuration;
for (let t = firstBeat; t <= tEnd; t += beatDuration) {
const beatNum = Math.floor(t / beatDuration) + 1;