diff --git a/app/src/debug/res/drawable/ic_banner_foreground.xml b/app/src/debug/res/drawable/ic_banner_foreground.xml
new file mode 100644
index 0000000000..4e8dfde5b9
--- /dev/null
+++ b/app/src/debug/res/drawable/ic_banner_foreground.xml
@@ -0,0 +1,23 @@
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug/res/mipmap/ic_ani_banner.xml b/app/src/debug/res/mipmap/ic_ani_banner.xml
new file mode 100644
index 0000000000..e9cc7ece64
--- /dev/null
+++ b/app/src/debug/res/mipmap/ic_ani_banner.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9458212ceb..ef98c87e4d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,12 +33,17 @@
+
+
+
+
+
diff --git a/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt
index 54c87954a4..6c940d8479 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/anime/GlobalAnimeSearchScreen.kt
@@ -4,6 +4,10 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusProperties
+import androidx.compose.ui.focus.focusRequester
import eu.kanade.presentation.browse.GlobalSearchErrorResultItem
import eu.kanade.presentation.browse.GlobalSearchLoadingResultItem
import eu.kanade.presentation.browse.GlobalSearchResultItem
@@ -30,6 +34,7 @@ fun GlobalAnimeSearchScreen(
onClickItem: (Anime) -> Unit,
onLongClickItem: (Anime) -> Unit,
) {
+ val contentFocus = FocusRequester()
Scaffold(
topBar = { scrollBehavior ->
GlobalAnimeSearchToolbar(
@@ -44,6 +49,10 @@ fun GlobalAnimeSearchScreen(
onlyShowHasResults = state.onlyShowHasResults,
onToggleResults = onToggleResults,
scrollBehavior = scrollBehavior,
+ modifier = Modifier
+ .focusProperties {
+ down = contentFocus
+ },
)
},
) { paddingValues ->
@@ -54,6 +63,7 @@ fun GlobalAnimeSearchScreen(
onClickSource = onClickSource,
onClickItem = onClickItem,
onLongClickItem = onLongClickItem,
+ modifier = Modifier.focusRequester(contentFocus),
)
}
}
@@ -66,10 +76,12 @@ internal fun GlobalSearchContent(
onClickSource: (AnimeCatalogueSource) -> Unit,
onClickItem: (Anime) -> Unit,
onLongClickItem: (Anime) -> Unit,
+ modifier: Modifier = Modifier,
fromSourceId: Long? = null,
) {
LazyColumn(
contentPadding = contentPadding,
+ modifier = modifier,
) {
items.forEach { (source, result) ->
item(key = source.id) {
diff --git a/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt b/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt
index e7219ef1e9..fcd915787e 100644
--- a/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt
+++ b/app/src/main/java/eu/kanade/presentation/browse/anime/components/GlobalAnimeSearchToolbar.kt
@@ -45,6 +45,7 @@ fun GlobalAnimeSearchToolbar(
onlyShowHasResults: Boolean,
onToggleResults: () -> Unit,
scrollBehavior: TopAppBarScrollBehavior,
+ modifier: Modifier = Modifier,
) {
Column(modifier = Modifier.background(MaterialTheme.colorScheme.surface)) {
Box {
@@ -67,7 +68,7 @@ fun GlobalAnimeSearchToolbar(
}
Row(
- modifier = Modifier
+ modifier = modifier
.horizontalScroll(rememberScrollState())
.padding(horizontal = MaterialTheme.padding.small),
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt
index bba72cf98e..010fc5c556 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/BasePreferenceWidget.kt
@@ -50,7 +50,7 @@ internal fun BasePreferenceWidget(
modifier = modifier
.highlightBackground(highlighted)
.sizeIn(minHeight = minHeight)
- .clickable(enabled = onClick != null, onClick = { onClick?.invoke() })
+ .then(if (onClick != null) Modifier.clickable(onClick = onClick) else Modifier)
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt
index f051ccbc86..f493726ca3 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/DisplayExtensions.kt
@@ -26,6 +26,7 @@ fun Context.prepareTabletUiContext(): Context {
val configuration = resources.configuration
val expected = when (Injekt.get().tabletUiMode().get()) {
TabletUiMode.AUTOMATIC ->
+ isTvBox(this) ||
configuration.smallestScreenWidthDp >= when (configuration.orientation) {
Configuration.ORIENTATION_PORTRAIT -> TABLET_UI_MIN_SCREEN_WIDTH_PORTRAIT_DP
else -> TABLET_UI_MIN_SCREEN_WIDTH_LANDSCAPE_DP
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt
index 9a49bbaa96..630b2b7204 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/TvUtils.kt
@@ -12,6 +12,7 @@ fun isTvBox(context: Context): Boolean {
// TV for sure
if (
+ pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK) ||
context.getSystemService(UiModeManager::class.java)
.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION
) {
diff --git a/app/src/main/res/drawable/ic_banner_foreground.xml b/app/src/main/res/drawable/ic_banner_foreground.xml
new file mode 100644
index 0000000000..9fa1f25622
--- /dev/null
+++ b/app/src/main/res/drawable/ic_banner_foreground.xml
@@ -0,0 +1,20 @@
+
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap/ic_ani_banner.xml b/app/src/main/res/mipmap/ic_ani_banner.xml
new file mode 100644
index 0000000000..13d2591edd
--- /dev/null
+++ b/app/src/main/res/mipmap/ic_ani_banner.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file