Fix backgrounding app on iPad dismissing modally-presented VC

Closes #399
Closes #316
This commit is contained in:
Shadowfacts 2023-05-28 14:25:49 -07:00
parent 2eda9657ac
commit 9a734565b0
2 changed files with 12 additions and 12 deletions

View File

@ -225,7 +225,7 @@ extension MainSplitViewController: UISplitViewControllerDelegate {
case let .tab(tab): case let .tab(tab):
// sidebar items that map 1 <-> 1 can be transferred directly // sidebar items that map 1 <-> 1 can be transferred directly
tabBarViewController.select(tab: tab) tabBarViewController.select(tab: tab, dismissPresented: false)
case .explore: case .explore:
// Search sidebar item maps to the Explore tab with the search controller/results visible // Search sidebar item maps to the Explore tab with the search controller/results visible
@ -268,10 +268,10 @@ extension MainSplitViewController: UISplitViewControllerDelegate {
// Transfer the navigation stack, dropping the search VC, to keep anything the user has opened // Transfer the navigation stack, dropping the search VC, to keep anything the user has opened
transferNavigationStack(from: .explore, to: exploreNav, dropFirst: true, append: true) transferNavigationStack(from: .explore, to: exploreNav, dropFirst: true, append: true)
tabBarViewController.select(tab: .explore) tabBarViewController.select(tab: .explore, dismissPresented: false)
case .bookmarks, .favorites, .list(_), .savedHashtag(_), .savedInstance(_): case .bookmarks, .favorites, .list(_), .savedHashtag(_), .savedInstance(_):
tabBarViewController.select(tab: .explore) tabBarViewController.select(tab: .explore, dismissPresented: false)
// Make sure the Explore VC doesn't show its search bar when it appears, in case the user was previously // Make sure the Explore VC doesn't show its search bar when it appears, in case the user was previously
// in compact mode and performing a search. // in compact mode and performing a search.
let exploreNav = tabBarViewController.viewController(for: .explore) as! UINavigationController let exploreNav = tabBarViewController.viewController(for: .explore) as! UINavigationController

View File

@ -111,13 +111,13 @@ class MainTabBarViewController: UITabBarController, UITabBarControllerDelegate {
repositionFastSwitcherIndicator() repositionFastSwitcherIndicator()
} }
func select(tab: Tab) { func select(tab: Tab, dismissPresented: Bool) {
if tab == .compose { if tab == .compose {
compose(editing: nil) compose(editing: nil)
} else { } else {
// when switching tabs, dismiss the currently presented VC // when switching tabs, dismiss the currently presented VC
// otherwise the selected tab changes behind the presented VC // otherwise the selected tab changes behind the presented VC
if presentedViewController != nil { if presentedViewController != nil && dismissPresented {
dismiss(animated: true) { dismiss(animated: true) {
self.selectedIndex = tab.rawValue self.selectedIndex = tab.rawValue
} }
@ -291,18 +291,18 @@ extension MainTabBarViewController: TuskerRootViewController {
func select(route: TuskerRoute, animated: Bool) { func select(route: TuskerRoute, animated: Bool) {
switch route { switch route {
case .timelines: case .timelines:
select(tab: .timelines) select(tab: .timelines, dismissPresented: true)
case .notifications: case .notifications:
select(tab: .notifications) select(tab: .notifications, dismissPresented: true)
case .myProfile: case .myProfile:
select(tab: .myProfile) select(tab: .myProfile, dismissPresented: true)
case .explore: case .explore:
select(tab: .explore) select(tab: .explore, dismissPresented: true)
case .bookmarks: case .bookmarks:
select(tab: .explore) select(tab: .explore, dismissPresented: true)
getNavigationController().pushViewController(BookmarksViewController(mastodonController: mastodonController), animated: animated) getNavigationController().pushViewController(BookmarksViewController(mastodonController: mastodonController), animated: animated)
case .list(id: let id): case .list(id: let id):
select(tab: .explore) select(tab: .explore, dismissPresented: true)
if let list = mastodonController.getCachedList(id: id) { if let list = mastodonController.getCachedList(id: id) {
let nav = getNavigationController() let nav = getNavigationController()
_ = nav.popToRootViewController(animated: animated) _ = nav.popToRootViewController(animated: animated)
@ -325,7 +325,7 @@ extension MainTabBarViewController: TuskerRootViewController {
return return
} }
select(tab: .explore) select(tab: .explore, dismissPresented: true)
exploreNavController.popToRootViewController(animated: false) exploreNavController.popToRootViewController(animated: false)
// setting searchController.isActive directly doesn't work until the view has loaded/appeared for the first time // setting searchController.isActive directly doesn't work until the view has loaded/appeared for the first time