From 2da73d5f5172664a6082dd7e5ff00073fd3f2f7b Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Fri, 15 May 2020 13:06:10 +0800 Subject: [PATCH] fix: scroll back to top when query changed. --- Pixiview/Illust/RankingPage.xaml.cs | 43 +++++++++++++---------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/Pixiview/Illust/RankingPage.xaml.cs b/Pixiview/Illust/RankingPage.xaml.cs index 0076bd7..bcf8db9 100644 --- a/Pixiview/Illust/RankingPage.xaml.cs +++ b/Pixiview/Illust/RankingPage.xaml.cs @@ -269,13 +269,8 @@ namespace Pixiview.Illust { ToggleFilterPanel(false); } - // release - ReleaseCollection(); - previousEnabled = false; - dateEnabled = false; - nextEnabled = false; queryDate = date; - StartLoad(true); + PrepareLoad(); } } @@ -299,13 +294,8 @@ namespace Pixiview.Illust // first load or loading return; } - // release - ReleaseCollection(); - previousEnabled = false; - dateEnabled = false; - nextEnabled = false; queryDate = e.NewDate.ToString("yyyyMMdd"); - StartLoad(true); + PrepareLoad(); } private void TapGestureRecognizer_Tapped(object sender, EventArgs e) @@ -351,29 +341,34 @@ namespace Pixiview.Illust var query = QueryKey; ToggleFilterPanel(false); - bool refresh = false; lock (sync) { if (IsLoading) { return; } - //if (lastQueryKey != query) - { - // release - ReleaseCollection(); - // query changed. - lastQueryKey = query; - refresh = true; - App.DebugPrint($"query changed: {query}"); - } } - if (refresh) + //if (lastQueryKey != query) { - StartLoad(true); + // query changed. + lastQueryKey = query; + App.DebugPrint($"query changed: {query}"); + PrepareLoad(); } } + private async void PrepareLoad() + { + await scrollView.ScrollToAsync(0, -topOffset, true); + // release + ReleaseCollection(); + previousEnabled = false; + dateEnabled = false; + nextEnabled = false; + ToolbarCommand.ChangeCanExecute(); + StartLoad(true); + } + private void ReleaseCollection() { var collection = IllustCollection;