feat(radarr): make the collection movie overview popup scrollable

A collection movie's overview renders in a popup that does not scroll,
so a long overview overflows with no way to read the rest. The popup now
scrolls.

The popup owns its own ScrollableText, built from the selected collection
movie's overview when it opens and torn down on Esc so a reopened popup
starts at the top. Scrolling mutates only that owned state. The
background renders the Collection record's overview and the movies
table, neither of which carries a scroll offset, so they cannot scroll
along with the popup. The popup also gains the loading and absent
fallbacks the rest of the tree already has.

Give the collection movie fixture an overview distinct from its
collection's, and a multi-paragraph one, so the snapshots can tell the
two records apart and a scrolled popup is distinguishable from an
unscrolled one.
This commit is contained in:
Dark-Alex-17 committed 2026-09-08 22:07:22 -06:00
1 parent b3ce15a564
commit c9244b0459
24 files changed
+913 -66

No files matched your search

@@ -28,7 +28,7 @@ mod tests {
"movies": [
{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -109,7 +109,7 @@ mod tests {
"movies": [
{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -189,7 +189,7 @@ mod tests {
"qualityProfileId": 2222,
"movies": [{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -218,7 +218,7 @@ mod tests {
"qualityProfileId": 2222,
"movies": [{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -306,7 +306,7 @@ mod tests {
"qualityProfileId": 2222,
"movies": [{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -335,7 +335,7 @@ mod tests {
"qualityProfileId": 2222,
"movies": [{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -79,7 +79,7 @@ pub mod test_utils {
"movies": [
{
"title": "Test",
"overview": "Collection blah blah blah",
"overview": "Collection movie blah blah blah\r\n\r\nIt was shot in Madison, Wisconsin: a city the cast never really left.\r\n\r\nThe sequel took seven years to finish.\r\n",
"year": 2023,
"runtime": 120,
"tmdbId": 1234,
@@ -177,7 +177,12 @@ pub mod test_utils {
pub fn collection_movie() -> CollectionMovie {
CollectionMovie {
title: "Test".to_owned().into(),
overview: "Collection blah blah blah".to_owned(),
overview: "Collection movie blah blah blah\r\n\
\r\n\
It was shot in Madison, Wisconsin: a city the cast never really left.\r\n\
\r\n\
The sequel took seven years to finish.\r\n"
.to_owned(),
year: 2023,
runtime: 120,
tmdb_id: 1234,