|
1052 | 1052 |
|
1053 | 1053 | sub onRowItemSelected() |
1054 | 1054 | m.top.selectedItem = m.top.content.getChild(m.top.rowItemSelected[0]).getChild(m.top.rowItemSelected[1]) |
| 1055 | + ' Clear immediately — prevents stale value from re-firing the m.port |
| 1056 | + ' observer when the parent ItemDetails screen is restored after popScene. |
| 1057 | + m.top.selectedItem = invalid |
1055 | 1058 | end sub |
1056 | 1059 |
|
1057 | 1060 | sub onRowItemFocused() |
|
1125 | 1128 | end if |
1126 | 1129 | end sub |
1127 | 1130 |
|
| 1131 | +' destroy: Full teardown releasing all resources before component removal. |
| 1132 | +' Called by ItemDetails.destroy() before nulling the extrasGrid reference. |
| 1133 | +sub destroy() |
| 1134 | + ' Stop all in-flight tasks and unobserve their content fields |
| 1135 | + cancelInFlightChain() |
| 1136 | + |
| 1137 | + ' Stop and release the program progress timer (inherited from JRRowList) |
| 1138 | + stopProgramProgressTicking(true) |
| 1139 | + |
| 1140 | + ' Unobserve m.top fields set in init() |
| 1141 | + m.top.unobserveField("rowItemSelected") |
| 1142 | + m.top.unobserveField("rowItemFocused") |
| 1143 | + m.top.unobserveField("programsExpired") |
| 1144 | + |
| 1145 | + ' Release task references |
| 1146 | + m.LoadSeasonsTask = invalid |
| 1147 | + m.LoadSeasonAllEpisodesTask = invalid |
| 1148 | + m.LoadSeasonEpisodesTask = invalid |
| 1149 | + m.LoadAdditionalPartsTask = invalid |
| 1150 | + m.LoadPeopleTask = invalid |
| 1151 | + m.LikeThisTask = invalid |
| 1152 | + m.SpecialFeaturesTask = invalid |
| 1153 | + m.LoadMoviesTask = invalid |
| 1154 | + m.LoadShowsTask = invalid |
| 1155 | + m.LoadSeriesTask = invalid |
| 1156 | + m.LoadBoxSetItemsTask = invalid |
| 1157 | + m.LoadArtistAlbumsTask = invalid |
| 1158 | + m.LoadArtistAppearsOnTask = invalid |
| 1159 | + m.LoadArtistSongsTask = invalid |
| 1160 | + m.LoadArtistSimilarTask = invalid |
| 1161 | + m.LoadAlbumSongsTask = invalid |
| 1162 | + m.LoadPlaylistItemsTask = invalid |
| 1163 | + m.LoadPhotoAlbumItemsTask = invalid |
| 1164 | + m.LoadChannelProgramsTask = invalid |
| 1165 | + |
| 1166 | + ' Clear row references |
| 1167 | + m.rowChapters = invalid |
| 1168 | + m.rowAdditionalParts = invalid |
| 1169 | + m.rowSeasons = invalid |
| 1170 | + m.rowEpisodes = invalid |
| 1171 | + m.rowSeasonEpisodes = invalid |
| 1172 | + m.rowCast = invalid |
| 1173 | + m.rowLikeThis = invalid |
| 1174 | + m.rowSpecialFeatures = invalid |
| 1175 | + m.rowBoxSetItems = invalid |
| 1176 | + m.rowMovies = invalid |
| 1177 | + m.rowTvShows = invalid |
| 1178 | + m.rowSeries = invalid |
| 1179 | + m.rowArtistAlbums = invalid |
| 1180 | + m.rowArtistAppearsOn = invalid |
| 1181 | + m.rowArtistSongs = invalid |
| 1182 | + m.rowAlbumSongs = invalid |
| 1183 | + m.rowAlbumArtistAlbums = invalid |
| 1184 | + m.rowPlaylistItems = invalid |
| 1185 | + m.rowPhotoAlbumItems = invalid |
| 1186 | + m.rowChannelPrograms = invalid |
| 1187 | + |
| 1188 | + ' Reset flags |
| 1189 | + m.isRefetchingChannelPrograms = false |
| 1190 | +end sub |
| 1191 | + |
1128 | 1192 | ' onKeyEvent: Anticipate the next row on UP/DOWN so the panel translation animation starts |
1129 | 1193 | ' in sync with the RowList floatingFocus animation rather than after it completes. |
1130 | 1194 | ' Returns false so the RowList handles the actual navigation. |
|
0 commit comments