[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:
2025-11-20 17:34:39 +09:00
parent bbcc4eddd1
commit d9aebac816
2 changed files with 27 additions and 0 deletions

View File

@@ -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, // ✅ 포커스 복원 타겟 전달
},
})
);

View File

@@ -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, // 포커스 복원 후 초기화
},
})
);