From f52d890e7f8a3c418ddab41f41d4b577bce0dc06 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Tue, 22 Sep 2026 09:10:12 -0300 Subject: [PATCH] Fix library search when clicking source name in manga info screen (#4002) --- CHANGELOG.md | 1 + .../kanade/presentation/manga/MangaScreen.kt | 4 +-- .../manga/components/MangaInfoHeader.kt | 27 ++++++++++--------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b42ea786..70173b26f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - Fixed MangaBaka scores being wrong when score step size was set to > 1 ([@MajorTanya](https://github.com/MajorTanya)) ([#3740](https://github.com/mihonapp/mihon/pull/3740)) - Fixed default category and manga sometimes not getting their category set when restoring a backup ([@Secozzi](https://github.com/Secozzi)) ([#3891](https://github.com/mihonapp/mihon/pull/3891)) - Fixed AniList rate limit ([@MajorTanya](https://github.com/MajorTanya)) ([#3942](https://github.com/mihonapp/mihon/pull/3942)) +- Fixed library search when clicking source name in manga info screen ([@choppeh](https://github.com/choppeh)) ([#4002](https://github.com/mihonapp/mihon/pull/4002)) ## [v0.20.4] - 2026-08-05 ### Fixed diff --git a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt index 6b9acc7b7..3ffd36694 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -378,7 +378,7 @@ private fun MangaScreenSmallImpl( isTabletUi = false, appBarPadding = topPadding, manga = state.manga, - sourceName = remember { state.source.getNameForMangaInfo() }, + source = remember { state.source }, isStubSource = remember { state.source is StubSource }, onCoverClick = onCoverClicked, doSearch = onSearch, @@ -614,7 +614,7 @@ fun MangaScreenLargeImpl( isTabletUi = true, appBarPadding = contentPadding.calculateTopPadding(), manga = state.manga, - sourceName = remember { state.source.getNameForMangaInfo() }, + source = remember { state.source }, isStubSource = remember { state.source is StubSource }, onCoverClick = onCoverClicked, doSearch = onSearch, diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt index 983dd05f4..9fff9db1f 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt @@ -72,6 +72,8 @@ import com.mikepenz.markdown.model.markdownAnnotatorConfig import com.mikepenz.markdown.utils.getUnescapedTextInNode import eu.kanade.presentation.components.DropdownMenu import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.getNameForMangaInfo import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.system.copyToClipboard import kotlinx.datetime.TimeZone @@ -114,7 +116,7 @@ fun MangaInfoBox( isTabletUi: Boolean, appBarPadding: Dp, manga: Manga, - sourceName: String, + source: Source, isStubSource: Boolean, onCoverClick: () -> Unit, doSearch: (query: String, global: Boolean) -> Unit, @@ -151,7 +153,7 @@ fun MangaInfoBox( MangaAndSourceTitlesSmall( appBarPadding = appBarPadding, manga = manga, - sourceName = sourceName, + source = source, isStubSource = isStubSource, onCoverClick = onCoverClick, doSearch = doSearch, @@ -160,7 +162,7 @@ fun MangaInfoBox( MangaAndSourceTitlesLarge( appBarPadding = appBarPadding, manga = manga, - sourceName = sourceName, + source = source, isStubSource = isStubSource, onCoverClick = onCoverClick, doSearch = doSearch, @@ -344,7 +346,7 @@ fun ExpandableMangaDescription( private fun MangaAndSourceTitlesLarge( appBarPadding: Dp, manga: Manga, - sourceName: String, + source: Source, isStubSource: Boolean, onCoverClick: () -> Unit, doSearch: (query: String, global: Boolean) -> Unit, @@ -370,7 +372,7 @@ private fun MangaAndSourceTitlesLarge( author = manga.author, artist = manga.artist, status = manga.status, - sourceName = sourceName, + source = source, isStubSource = isStubSource, doSearch = doSearch, textAlign = TextAlign.Center, @@ -382,7 +384,7 @@ private fun MangaAndSourceTitlesLarge( private fun MangaAndSourceTitlesSmall( appBarPadding: Dp, manga: Manga, - sourceName: String, + source: Source, isStubSource: Boolean, onCoverClick: () -> Unit, doSearch: (query: String, global: Boolean) -> Unit, @@ -413,7 +415,7 @@ private fun MangaAndSourceTitlesSmall( author = manga.author, artist = manga.artist, status = manga.status, - sourceName = sourceName, + source = source, isStubSource = isStubSource, doSearch = doSearch, ) @@ -427,7 +429,7 @@ private fun ColumnScope.MangaContentInfo( author: String?, artist: String?, status: Long, - sourceName: String, + source: Source, isStubSource: Boolean, doSearch: (query: String, global: Boolean) -> Unit, textAlign: TextAlign? = LocalTextStyle.current.textAlign, @@ -553,12 +555,9 @@ private fun ColumnScope.MangaContentInfo( ) } Text( - text = sourceName, + text = source.getNameForMangaInfo(), modifier = Modifier.clickableNoIndication { - doSearch( - sourceName, - false, - ) + doSearch(source.query(), false) }, overflow = TextOverflow.Ellipsis, maxLines = 1, @@ -567,6 +566,8 @@ private fun ColumnScope.MangaContentInfo( } } +private fun Source.query(): String = """src:"$name" lang:$lang""".takeIf { name.isNotBlank() } ?: "srcid:$id" + @Composable private fun descriptionAnnotator(loadImages: Boolean, linkStyle: SpanStyle) = remember(loadImages, linkStyle) { markdownAnnotator(