Skip to content

Commit 9ae050e

Browse files
Fix a left scroll focus escape issue on the channel AND chapter display overlay.
1 parent df610b2 commit 9ae050e

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

app/src/main/java/org/jellyfin/androidtv/ui/playback/CustomPlaybackOverlayFragment.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ public void refreshFavorite(UUID channelId) {
475475
@Override
476476
public boolean onKey(View v, int keyCode, KeyEvent event) {
477477
if (event.getAction() == KeyEvent.ACTION_DOWN) {
478-
if (!mGuideVisible)
478+
if (!mGuideVisible && !mPopupPanelVisible)
479479
leanbackOverlayFragment.setShouldShowOverlay(true);
480480
else {
481481
leanbackOverlayFragment.setShouldShowOverlay(false);
@@ -527,11 +527,6 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
527527
}
528528
}
529529

530-
if (mPopupPanelVisible && !mGuideVisible && keyCode == KeyEvent.KEYCODE_DPAD_LEFT && mPopupRowPresenter.getPosition() == 0) {
531-
mPopupRowsFragment.requireView().requestFocus();
532-
mPopupRowPresenter.setPosition(0);
533-
return true;
534-
}
535530
if (mGuideVisible) {
536531
if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_BUTTON_B || keyCode == KeyEvent.KEYCODE_ESCAPE) {
537532
// go back to normal

app/src/main/java/org/jellyfin/androidtv/ui/presentation/PositionableListRowPresenter.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jellyfin.androidtv.ui.presentation
22

3+
import android.view.KeyEvent
34
import androidx.leanback.widget.RowPresenter
45
import timber.log.Timber
56

@@ -22,6 +23,12 @@ class PositionableListRowPresenter : CustomListRowPresenter {
2223
if (holder !is ViewHolder) return
2324

2425
viewHolder = holder
26+
// Prevent focus from escaping the grid at the left boundary so the user
27+
// stays inside the popup (channel changer / chapter selector).
28+
holder.gridView?.setOnKeyInterceptListener { event ->
29+
event.keyCode == KeyEvent.KEYCODE_DPAD_LEFT &&
30+
(holder.gridView?.selectedPosition ?: -1) <= 0
31+
}
2532
}
2633

2734
var position: Int

0 commit comments

Comments
 (0)