fix(tv): keep search grid padding on re-search and stop dictation hint clip

- TVSearchSection: replace contentInset+contentOffset (offset only applies on
  initial mount, so the reused FlatList lost its left padding on a second
  search and snapped to the edge) with stable contentContainerStyle padding.
- TVSearchPage: drop the horizontal margin around the native tvOS search bar so
  it spans full width; the extra margin squeezed the bar and clipped its
  trailing "Hold to Dictate in <Language>" hint.
This commit is contained in:
Fredrik Burmester
2026-06-01 12:40:26 +02:00
parent b888a646ec
commit a9b28484a5
2 changed files with 9 additions and 6 deletions

View File

@@ -235,10 +235,13 @@ export const TVSearchPage: React.FC<TVSearchPageProps> = ({
module). It renders the native search bar + grid keyboard and
forwards typed text into the existing query pipeline via setSearch;
our own results grid renders below. */}
{/* No horizontal margin here: the native tvOS search bar centers itself
and renders a trailing "Hold to Dictate in <Language>" hint. Extra
margins squeeze the bar's width and clip that trailing hint, so let
the native view span the full width and own its own insets. */}
<View
style={{
marginBottom: 24,
marginHorizontal: HORIZONTAL_PADDING,
height: SEARCH_AREA_HEIGHT,
}}
>

View File

@@ -297,12 +297,12 @@ export const TVSearchSection: React.FC<TVSearchSectionProps> = ({
removeClippedSubviews={false}
getItemLayout={getItemLayout}
style={{ overflow: "visible" }}
contentInset={{
left: edgePadding,
right: edgePadding,
}}
contentOffset={{ x: -edgePadding, y: 0 }}
// Edge padding via contentContainerStyle, NOT contentInset+contentOffset.
// contentOffset only applies on initial mount; since this FlatList is
// reused across searches (stable key), a second search left the inset
// without the offset and the grid snapped flush to the left edge.
contentContainerStyle={{
paddingHorizontal: edgePadding,
paddingVertical: SCALE_PADDING,
}}
/>