From 9cc6246063d0bee2ff8b260ffd5793a4551b261c Mon Sep 17 00:00:00 2001 From: optrader Date: Thu, 20 Nov 2025 15:49:39 +0900 Subject: [PATCH] [251120] fix: PlayerPanel tabIndex=2 focus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ• 컀밋 μ‹œκ°„: 2025. 11. 20. 15:49:39 πŸ“Š λ³€κ²½ 톡계: β€’ 총 파일: 3개 β€’ μΆ”κ°€: +20쀄 β€’ μ‚­μ œ: -4쀄 πŸ“ μˆ˜μ •λœ 파일: ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelNext.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowButton.jsx --- .../PlayerOverlay/PlayerOverlayContents.jsx | 16 ++++++++++++++-- .../PlayerTabContents/v2/LiveChannelNext.jsx | 4 +++- .../PlayerTabContents/v2/ShopNowButton.jsx | 4 +++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx index b6660d54..2773faf4 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx @@ -104,16 +104,28 @@ function PlayerOverlayContents({ const onSpotlightMoveMediaButton = useCallback( (e) => { e.stopPropagation(); + + // TabContainerV2의 tabIndex=2일 λ•Œ ν•˜λ‹¨ λ²„νŠΌλ“€λ‘œ 포컀슀 이동 + if (tabContainerVersion === 2 && tabIndexV2 === 2) { + if (Spotlight.focus('live-channel-next-button')) return; + if (Spotlight.focus('below-tab-shop-now-button')) return; + } + if (type === 'LIVE') { return Spotlight.focus('videoIndicator-down-button'); } return Spotlight.focus(SpotlightIds.PLAYER_PLAY_BUTTON); }, - [type] + [type, tabContainerVersion, tabIndexV2] ); const onSpotlightMoveSubtitleButton = useCallback( () => { + // 1. λ¨Όμ € μžλ§‰ λ²„νŠΌμœΌλ‘œ 포컀슀 μ‹œλ„ + if (Spotlight.focus('player-subtitlebutton')) { + return true; + } + // TabContainerV2의 tabIndex=2일 λ•Œ TabContainerV2 λ²„νŠΌλ“€λ‘œ 포컀슀 이동 if (tabContainerVersion === 2 && tabIndexV2 === 2) { let focusSuccessful = false; @@ -228,7 +240,7 @@ function PlayerOverlayContents({ if (ev.keyCode === 37 && currentId === SpotlightIds.PLAYER_SUBTITLE_BUTTON) { ev.preventDefault(); ev.stopPropagation(); - return onSpotlightMoveMediaButton(ev); + return onSpotlightMoveBackButton(ev); } if (ev.keyCode === 38 && currentId === SpotlightIds.PLAYER_PLAY_BUTTON) { ev.preventDefault(); diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelNext.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelNext.jsx index 417e011a..bbf4bd01 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelNext.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelNext.jsx @@ -23,7 +23,9 @@ export default function LiveChannelNext({ const handleSpotlightUp = (e) => { e.stopPropagation(); e.preventDefault(); - Spotlight.focus(SpotlightIds.PLAYER_BACK_BUTTON); + if (!Spotlight.focus('player-subtitlebutton')) { + Spotlight.focus(SpotlightIds.PLAYER_BACK_BUTTON); + } }; return ( diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowButton.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowButton.jsx index 1bd3c794..765539d0 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowButton.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ShopNowButton.jsx @@ -12,7 +12,9 @@ export default function ShopNowButton({ onClick }) { const handleSpotlightUp = (e) => { e.stopPropagation(); e.preventDefault(); - Spotlight.focus(SpotlightIds.PLAYER_BACK_BUTTON); + if (!Spotlight.focus('player-subtitlebutton')) { + Spotlight.focus(SpotlightIds.PLAYER_BACK_BUTTON); + } }; return (