[251120] fix: PlayerPanel Focus Recovery Done
🕐 커밋 시간: 2025. 11. 20. 17:34:39 📊 변경 통계: • 총 파일: 2개 • 추가: +27줄 📝 수정된 파일: ~ com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx 🔧 주요 변경 내용: • 소규모 기능 개선
This commit is contained in:
@@ -185,6 +185,7 @@ export default function DetailPanel({ panelInfo, isOnTop, spotlightId }) {
|
||||
detailPanelClosed: true, // ✅ flag
|
||||
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
||||
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
||||
lastFocusedTargetId: panelInfo?.lastFocusedTargetId, // ✅ 포커스 복원 타겟 전달
|
||||
}
|
||||
}));
|
||||
break;
|
||||
@@ -288,6 +289,7 @@ export default function DetailPanel({ panelInfo, isOnTop, spotlightId }) {
|
||||
detailPanelClosed: true, // ✅ flag
|
||||
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
||||
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
||||
lastFocusedTargetId: panelInfo?.lastFocusedTargetId, // ✅ 포커스 복원 타겟 전달
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
@@ -365,6 +365,30 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
// 2. Reset detailPanelClosed flag
|
||||
if (panelInfo.detailPanelClosed) {
|
||||
console.log('[PlayerPanel] detailPanelClosed flag 초기화');
|
||||
console.log('[PlayerPanel] Returned from DetailPanel', {
|
||||
detailPanelClosedAt: panelInfo.detailPanelClosedAt,
|
||||
detailPanelClosedFromSource: panelInfo.detailPanelClosedFromSource,
|
||||
lastFocusedTargetId: panelInfo.lastFocusedTargetId,
|
||||
});
|
||||
|
||||
// 포커스 복원 로직 추가 (1000ms 지연)
|
||||
if (panelInfo.lastFocusedTargetId) {
|
||||
console.log('[PlayerPanel] 🎯 DetailPanel 복귀 후 1000ms 지연 포커스 복원 예약:', panelInfo.lastFocusedTargetId);
|
||||
|
||||
const focusTimeoutId = setTimeout(() => {
|
||||
console.log('[PlayerPanel] 🎯 DetailPanel 복귀 후 포커스 복원 실행:', panelInfo.lastFocusedTargetId);
|
||||
Spotlight.focus(panelInfo.lastFocusedTargetId);
|
||||
}, 1000);
|
||||
|
||||
// cleanup 함수를 통해 컴포넌트 unmount 시 타이머 정리
|
||||
return () => {
|
||||
if (focusTimeoutId) {
|
||||
clearTimeout(focusTimeoutId);
|
||||
console.log('[PlayerPanel] 🎯 포커스 복원 타이머 정리');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
dispatch(
|
||||
updatePanel({
|
||||
name: panel_names.PLAYER_PANEL,
|
||||
@@ -372,6 +396,7 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
detailPanelClosed: false,
|
||||
detailPanelClosedAt: undefined,
|
||||
detailPanelClosedFromSource: undefined,
|
||||
lastFocusedTargetId: undefined, // 포커스 복원 후 초기화
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user