From 36edf0f4768ee4fab5d28526ce1a803d29901f85 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Fri, 17 Jan 2020 20:43:32 +0400 Subject: [PATCH] Fix ThemeSettingsThemeItem transaction --- .../Sources/Themes/ThemeAutoNightSettingsController.swift | 1 + .../Sources/Themes/ThemeSettingsThemeItem.swift | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift index a95320fa48..13136e0a15 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift @@ -587,6 +587,7 @@ public func themeAutoNightSettingsController(context: AccountContext) -> ViewCon } let controller = ItemListController(context: context, state: signal) + controller.alwaysSynchronous = true presentControllerImpl = { [weak controller] c in controller?.present(c, in: .window(.root)) } diff --git a/submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift index cde23ef767..70366675ee 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeSettingsThemeItem.swift @@ -415,6 +415,7 @@ private struct ThemeSettingsThemeItemNodeTransition { let insertions: [ListViewInsertItem] let updates: [ListViewUpdateItem] let crossfade: Bool + let entries: [ThemeSettingsThemeEntry] } private func preparedTransition(context: AccountContext, action: @escaping (PresentationThemeReference) -> Void, contextAction: ((PresentationThemeReference, ASDisplayNode, ContextGesture?) -> Void)?, from fromEntries: [ThemeSettingsThemeEntry], to toEntries: [ThemeSettingsThemeEntry], crossfade: Bool) -> ThemeSettingsThemeItemNodeTransition { @@ -424,7 +425,7 @@ private func preparedTransition(context: AccountContext, action: @escaping (Pres let insertions = indicesAndItems.map { ListViewInsertItem(index: $0.0, previousIndex: $0.2, item: $0.1.item(context: context, action: action, contextAction: contextAction), directionHint: .Down) } let updates = updateIndices.map { ListViewUpdateItem(index: $0.0, previousIndex: $0.2, item: $0.1.item(context: context, action: action, contextAction: contextAction), directionHint: nil) } - return ThemeSettingsThemeItemNodeTransition(deletions: deletions, insertions: insertions, updates: updates, crossfade: crossfade) + return ThemeSettingsThemeItemNodeTransition(deletions: deletions, insertions: insertions, updates: updates, crossfade: crossfade, entries: toEntries) } private func ensureThemeVisible(listNode: ListView, themeReference: PresentationThemeReference, animated: Bool) -> Bool { @@ -512,10 +513,13 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { if self.initialized && transition.crossfade { options.insert(.AnimateCrossfade) } + options.insert(.Synchronous) var scrollToItem: ListViewScrollToItem? if !self.initialized { - if let index = item.themes.firstIndex(where: { $0.index == item.currentTheme.index }) { + if let index = transition.entries.firstIndex(where: { entry in + return entry.theme.index == item.currentTheme.index + }) { scrollToItem = ListViewScrollToItem(index: index, position: .bottom(-57.0), animated: false, curve: .Default(duration: 0.0), directionHint: .Down) self.initialized = true }