From 18bd6ff3ca1785c24b95e92e4804fa778b1e2399 Mon Sep 17 00:00:00 2001 From: tapframe Date: Sun, 19 Oct 2025 18:08:37 +0530 Subject: [PATCH] macos fullscreen player issue fix --- src/components/player/KSPlayerCore.tsx | 67 ++++++++++++++------------ src/components/ui/ToastManager.tsx | 1 + src/contexts/ToastContext.tsx | 1 + src/services/toastService.ts | 1 + 4 files changed, 40 insertions(+), 30 deletions(-) diff --git a/src/components/player/KSPlayerCore.tsx b/src/components/player/KSPlayerCore.tsx index ae9db99..672c418 100644 --- a/src/components/player/KSPlayerCore.tsx +++ b/src/components/player/KSPlayerCore.tsx @@ -94,13 +94,20 @@ const KSPlayerCore: React.FC = () => { const screenData = Dimensions.get('screen'); const [screenDimensions, setScreenDimensions] = useState(screenData); - // iPad-specific fullscreen handling + // iPad/macOS-specific fullscreen handling const isIPad = Platform.OS === 'ios' && (screenData.width > 1000 || screenData.height > 1000); - const shouldUseFullscreen = isIPad; + const isMacOS = Platform.OS === 'ios' && Platform.isPad === true; + const shouldUseFullscreen = isIPad || isMacOS; // Use window dimensions for iPad instead of screen dimensions const windowData = Dimensions.get('window'); const effectiveDimensions = shouldUseFullscreen ? windowData : screenData; + + // Helper to get appropriate dimensions for gesture areas and overlays + const getDimensions = () => ({ + width: shouldUseFullscreen ? windowData.width : screenDimensions.width, + height: shouldUseFullscreen ? windowData.height : screenDimensions.height, + }); const [paused, setPaused] = useState(false); const [currentTime, setCurrentTime] = useState(0); @@ -2419,7 +2426,7 @@ const KSPlayerCore: React.FC = () => { { { opacity: backgroundFadeAnim, zIndex: shouldHideOpeningOverlay ? -1 : 3000, - width: screenDimensions.width, - height: screenDimensions.height, + width: shouldUseFullscreen ? '100%' : screenDimensions.width, + height: shouldUseFullscreen ? '100%' : screenDimensions.height, } ]} pointerEvents={shouldHideOpeningOverlay ? 'none' : 'auto'} @@ -2448,8 +2455,8 @@ const KSPlayerCore: React.FC = () => { @@ -2514,8 +2521,8 @@ const KSPlayerCore: React.FC = () => { style={[ styles.sourceChangeOverlay, { - width: screenDimensions.width, - height: screenDimensions.height, + width: shouldUseFullscreen ? '100%' : screenDimensions.width, + height: shouldUseFullscreen ? '100%' : screenDimensions.height, opacity: fadeAnim, } ]} @@ -2535,8 +2542,8 @@ const KSPlayerCore: React.FC = () => { { opacity: DISABLE_OPENING_OVERLAY ? 1 : openingFadeAnim, transform: DISABLE_OPENING_OVERLAY ? [] : [{ scale: openingScaleAnim }], - width: screenDimensions.width, - height: screenDimensions.height, + width: shouldUseFullscreen ? '100%' : screenDimensions.width, + height: shouldUseFullscreen ? '100%' : screenDimensions.height, } ]} > @@ -2556,10 +2563,10 @@ const KSPlayerCore: React.FC = () => { > @@ -2581,10 +2588,10 @@ const KSPlayerCore: React.FC = () => { > @@ -2613,18 +2620,18 @@ const KSPlayerCore: React.FC = () => { > @@ -2637,8 +2644,8 @@ const KSPlayerCore: React.FC = () => { position: 'absolute', top: 0, left: 0, - width: screenDimensions.width, - height: screenDimensions.height, + width: getDimensions().width, + height: getDimensions().height, }}> { }} > {/* Strong horizontal fade from left side */} - + { { = ({ children }) => { ); }; + diff --git a/src/services/toastService.ts b/src/services/toastService.ts index 2ceb987..dc81093 100644 --- a/src/services/toastService.ts +++ b/src/services/toastService.ts @@ -150,3 +150,4 @@ class ToastService { export const toastService = ToastService.getInstance(); export default toastService; +