FIX: sửa lỗi playhead đồng bộ giữa các tab, nhấn space có thể bind với phím play
This commit is contained in:
@@ -2416,3 +2416,17 @@
|
||||
- **FIX (app.jsx effect đổi tab 14814):** rời PIANO ROLL play → về MAIN/`session_*` + mainResumeRef null (play thuần) → `setIsPlaying(true)` — nhánh main updatePlayhead chạy → playhead main/section di chuyển theo elapsed (refs đang là của piano roll play — đồng bộ với âm). Hết bài → nhánh main tự stop. Resume block (mainResumeRef) giữ nguyên ưu tiên trước.
|
||||
- **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/templates/index.html` (?v=202608070420), `wiki.md`. Rebuild precompiled.
|
||||
- **Ghi chú/Test:** hard refresh → PIANO ROLL TAB → Space play (main chưa play) → chuyển MAIN/SECTION-TAB → playhead TIẾP TỤC di chuyển (log `[Playhead] tiếp tục theo piano roll`), âm piano roll vẫn kêu hết notes; quay lại piano roll → playhead đồng bộ.
|
||||
|
||||
### [2026-08-07 04:25] Task: Space không play/stop sau khi chuyển tab — focus tab header button nuốt space
|
||||
- **Báo cáo user:** chuyển tab → focus tự động nằm trên tên tab (tab header button) → nhấn Space thường không có tác dụng — phải click vào tab active thì Space mới capture được.
|
||||
- **Nguyên nhân:** tab header là `<button>` — sau khi chuyển tab (click header / mở tab bằng double-click item), focus giữ trên button tab header (có thể là header của tab KHÁC — chưa active). Space: keydown → handler play/stop ✓ — NHƯNG browser fire CLICK TỔNG HỢP ở keyup space trên button → click tab header → CHUYỂN TAB — nhìn như Space không play/stop (vừa play vừa đổi tab).
|
||||
- **FIX (app.jsx keydown handler — block Space):** trước khi play/stop → `document.activeElement` nếu là `BUTTON` → `blur()` — keyup sau đó target body → KHÔNG click tab header → Space play/stop ổn định ở mọi tab.
|
||||
- **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/templates/index.html` (?v=202608070425), `wiki.md`. Rebuild precompiled.
|
||||
- **Ghi chú/Test:** hard refresh → chuyển tab bằng click header (hoặc mở piano roll bằng double-click) → KHÔNG click thêm → nhấn Space → play/stop đúng tab hiện tại (không chuyển tab, không mất tác dụng).
|
||||
|
||||
### [2026-08-07 04:30] Task: PIANO ROLL — Space 2 lần mới stop khi main/section đang play ngầm
|
||||
- **Báo cáo user:** MAIN/SECTION đang play (MIDI kêu) → chuyển sang PIANO ROLL TAB → Space 1 lần KHÔNG stop (vẫn nghe âm) — Space lần 2 mới stop — "không phát hiện MIDI đang play".
|
||||
- **Nguyên nhân:** handlePlayPause nhánh sub-tab: `st.isPlaying` (piano roll tab) = false (chưa play tab) → rơi vào else → **stopAllPlayback (dừng main) + PLAY PIANO ROLL ngay** → âm vẫn còn (piano roll) → user tưởng "không stop". Space lần 2: st.isPlaying=true → stop ✓.
|
||||
- **FIX (app.jsx handlePlayPause nhánh sub-tab):** đầu nhánh — nếu `isPlaying` (main/section đang play ngầm) → `stopAllPlayback()` + setSubTabs isPlaying:false (mọi tab) + `setIsPlaying(false)` → return — Space = STOP trước, không play sub-tab. Space lần sau (đã stop) → play sub-tab bình thường.
|
||||
- **Các file ảnh hưởng:** `app/static/js/app.jsx`, `app/templates/index.html` (?v=202608070430), `wiki.md`. Rebuild precompiled.
|
||||
- **Ghi chú/Test:** hard refresh → play MAIN → mở PIANO ROLL tab (main play ngầm) → Space 1 lần → DỪNG hẳn (không còn âm); Space lần nữa → play piano roll (toggle bình thường).
|
||||
|
||||
Reference in New Issue
Block a user