[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
|
detailPanelClosed: true, // ✅ flag
|
||||||
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
||||||
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
||||||
|
lastFocusedTargetId: panelInfo?.lastFocusedTargetId, // ✅ 포커스 복원 타겟 전달
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
break;
|
break;
|
||||||
@@ -288,6 +289,7 @@ export default function DetailPanel({ panelInfo, isOnTop, spotlightId }) {
|
|||||||
detailPanelClosed: true, // ✅ flag
|
detailPanelClosed: true, // ✅ flag
|
||||||
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
detailPanelClosedAt: Date.now(), // ✅ 시점 기록
|
||||||
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
detailPanelClosedFromSource: sourceMenu, // ✅ 출처
|
||||||
|
lastFocusedTargetId: panelInfo?.lastFocusedTargetId, // ✅ 포커스 복원 타겟 전달
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -365,6 +365,30 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
|||||||
// 2. Reset detailPanelClosed flag
|
// 2. Reset detailPanelClosed flag
|
||||||
if (panelInfo.detailPanelClosed) {
|
if (panelInfo.detailPanelClosed) {
|
||||||
console.log('[PlayerPanel] detailPanelClosed flag 초기화');
|
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(
|
dispatch(
|
||||||
updatePanel({
|
updatePanel({
|
||||||
name: panel_names.PLAYER_PANEL,
|
name: panel_names.PLAYER_PANEL,
|
||||||
@@ -372,6 +396,7 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
|||||||
detailPanelClosed: false,
|
detailPanelClosed: false,
|
||||||
detailPanelClosedAt: undefined,
|
detailPanelClosedAt: undefined,
|
||||||
detailPanelClosedFromSource: undefined,
|
detailPanelClosedFromSource: undefined,
|
||||||
|
lastFocusedTargetId: undefined, // 포커스 복원 후 초기화
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user