From 3536370798bcadb094d503cf7c7ad0ecec3c0fb6 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Wed, 19 Nov 2025 00:57:00 +0100 Subject: [PATCH] Refactor fullscreen details layout from VStack to ZStack Switch from VStack to ZStack layout for better control over detail view positioning in fullscreen mode. Add z-index layering to ensure proper stacking order of player backend and video details. --- Shared/Player/VideoPlayerView.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Shared/Player/VideoPlayerView.swift b/Shared/Player/VideoPlayerView.swift index 4ec4d19a..f88215f1 100644 --- a/Shared/Player/VideoPlayerView.swift +++ b/Shared/Player/VideoPlayerView.swift @@ -268,7 +268,7 @@ struct VideoPlayerView: View { .ignoresSafeArea() #else GeometryReader { geometry in - VStack(spacing: 0) { + ZStack(alignment: .top) { player.playerBackendView .modifier( VideoPlayerSizeModifier( @@ -305,6 +305,7 @@ struct VideoPlayerView: View { #endif .background(Color.black) + .zIndex(1) if !detailsHiddenInFullScreen { VideoDetails( @@ -313,6 +314,7 @@ struct VideoPlayerView: View { sidebarQueue: $sidebarQueue ) .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + .frame(height: geometry.size.height) #if os(macOS) // TODO: Check whether this is needed on macOS. .onDisappear { @@ -323,8 +325,9 @@ struct VideoPlayerView: View { #endif .id(player.currentVideo?.cacheKey) .transition(.opacity) - .offset(y: detailViewDragOffset) + .offset(y: (fullScreenDetails ? 0 : player.playerSize.height) + detailViewDragOffset) .gesture(detailsDragGesture) + .zIndex(2) // Ensure details are on top } else { VStack {} }