corrigindo scroll após movimentações e edições das patterns na playlist
Deploy / Deploy (push) Successful in 2m2s
Details
Deploy / Deploy (push) Successful in 2m2s
Details
This commit is contained in:
parent
0f50cde78c
commit
8c41955e14
|
|
@ -188,9 +188,14 @@ export function renderAudioEditor() {
|
||||||
|
|
||||||
if (!audioEditor || !existingTrackContainer) return;
|
if (!audioEditor || !existingTrackContainer) return;
|
||||||
|
|
||||||
// ✅ Salva o scroll atual (senão toda edição “pula” pro início)
|
// ✅ preserva a posição de scroll mesmo recriando o container
|
||||||
const prevScrollLeft = existingTrackContainer.scrollLeft || 0;
|
const prevScrollLeft =
|
||||||
const prevScrollTop = existingTrackContainer.scrollTop || 0;
|
(existingTrackContainer?.scrollLeft ?? 0) ||
|
||||||
|
(appState.audio?.editorScrollLeft ?? 0);
|
||||||
|
|
||||||
|
const prevScrollTop =
|
||||||
|
(existingTrackContainer?.scrollTop ?? 0) ||
|
||||||
|
(appState.audio?.editorScrollTop ?? 0);
|
||||||
|
|
||||||
_ensureGlobalPlaylistSelectionFields();
|
_ensureGlobalPlaylistSelectionFields();
|
||||||
_installPlaylistKeybindOnce();
|
_installPlaylistKeybindOnce();
|
||||||
|
|
@ -778,9 +783,13 @@ export function renderAudioEditor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sync Scroll
|
// Sync Scroll
|
||||||
newTrackContainer.addEventListener("scroll", () => {
|
newTrackContainer.addEventListener("scroll", () => {
|
||||||
const scrollPos = scrollEl.scrollLeft;
|
const scrollPos = scrollEl.scrollLeft;
|
||||||
|
|
||||||
|
// ✅ guarda no estado para sobreviver a re-render
|
||||||
|
appState.audio.editorScrollLeft = scrollPos;
|
||||||
|
appState.audio.editorScrollTop = scrollEl.scrollTop || 0;
|
||||||
|
|
||||||
// sincroniza régua com o container
|
// sincroniza régua com o container
|
||||||
const mainRuler = tracksParent.querySelector(".timeline-ruler");
|
const mainRuler = tracksParent.querySelector(".timeline-ruler");
|
||||||
if (mainRuler && mainRuler.scrollLeft !== scrollPos) {
|
if (mainRuler && mainRuler.scrollLeft !== scrollPos) {
|
||||||
|
|
@ -802,8 +811,6 @@ export function renderAudioEditor() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Event Listener Principal (mousedown)
|
// Event Listener Principal (mousedown)
|
||||||
newTrackContainer.addEventListener("mousedown", (e) => {
|
newTrackContainer.addEventListener("mousedown", (e) => {
|
||||||
document.getElementById("timeline-context-menu").style.display = "none";
|
document.getElementById("timeline-context-menu").style.display = "none";
|
||||||
|
|
@ -1375,18 +1382,17 @@ export function renderAudioEditor() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ✅ Restaura o scroll anterior após reconstruir o container
|
// ✅ restaura scroll após reconstruir a DOM (precisa ser após tudo estar no DOM)
|
||||||
// (evita “voltar pro início” depois de mover/redimensionar/deletar)
|
requestAnimationFrame(() => {
|
||||||
try {
|
try {
|
||||||
newTrackContainer.scrollLeft = prevScrollLeft;
|
newTrackContainer.scrollLeft = prevScrollLeft;
|
||||||
newTrackContainer.scrollTop = prevScrollTop;
|
newTrackContainer.scrollTop = prevScrollTop;
|
||||||
|
|
||||||
// mantém régua alinhada (caso ela suporte scrollLeft)
|
// mantém régua alinhada na mesma posição
|
||||||
const mainRuler = tracksParent.querySelector(".timeline-ruler");
|
const mainRuler = tracksParent.querySelector(".timeline-ruler");
|
||||||
if (mainRuler) mainRuler.scrollLeft = prevScrollLeft;
|
if (mainRuler) mainRuler.scrollLeft = prevScrollLeft;
|
||||||
} catch (err) {
|
} catch {}
|
||||||
// silencioso: não pode quebrar a DAW
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue