From 6b5742c1ffabcce6251e3b452b638758d2e747e0 Mon Sep 17 00:00:00 2001 From: MCAxiaz Date: Sun, 12 Jan 2020 12:02:21 -0800 Subject: [PATCH] Fix catalogue search focus automatically being removed (#2396) Fix catalogue search focus automatically being removed --- .../tachiyomi/ui/base/controller/BaseController.kt | 7 ++++--- .../catalogue/browse/BrowseCatalogueController.kt | 14 +++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt index 292bf2e32..860c4d590 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt @@ -89,15 +89,16 @@ abstract class BaseController(bundle: Bundle? = null) : RestoreViewOnCreateContr * This method should be removed when fixed upstream. * Issue link: https://issuetracker.google.com/issues/37657375 */ - fun MenuItem.fixExpand() { + fun MenuItem.fixExpand(onExpand: ((MenuItem) -> Boolean)? = null, onCollapse: ((MenuItem) -> Boolean)? = null) { setOnActionExpandListener(object : MenuItem.OnActionExpandListener { override fun onMenuItemActionExpand(item: MenuItem): Boolean { - return true + return onExpand?.invoke(item) ?: true } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { activity?.invalidateOptionsMenu() - return true + + return onCollapse?.invoke(item) ?: true } }) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt index 3ea5eb68f..f73bb0938 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/browse/BrowseCatalogueController.kt @@ -36,7 +36,6 @@ import kotlinx.android.synthetic.main.main_activity.* import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers -import rx.subscriptions.Subscriptions import timber.log.Timber import uy.kohesive.injekt.injectLazy import java.util.concurrent.TimeUnit @@ -228,6 +227,7 @@ open class BrowseCatalogueController(bundle: Bundle) : val searchEventsObservable = searchView.queryTextChangeEvents() .skip(1) + .filter { router.backstack.lastOrNull()?.controller() == this@BrowseCatalogueController } .share() val writingObservable = searchEventsObservable .filter { !it.isSubmitted } @@ -238,11 +238,12 @@ open class BrowseCatalogueController(bundle: Bundle) : searchViewSubscription?.unsubscribe() searchViewSubscription = Observable.merge(writingObservable, submitObservable) .map { it.queryText().toString() } - .distinctUntilChanged() .subscribeUntilDestroy { searchWithQuery(it) } - untilDestroySubscriptions.add( - Subscriptions.create { if (isActionViewExpanded) collapseActionView() }) + fixExpand(onCollapse = { + searchWithQuery("") + true + }) } // Setup filters button @@ -310,11 +311,6 @@ open class BrowseCatalogueController(bundle: Bundle) : if (presenter.query == newQuery) return - // FIXME dirty fix to restore the toolbar buttons after closing search mode. - if (newQuery == "") { - activity?.invalidateOptionsMenu() - } - showProgressBar() adapter?.clear()