From 10a53fc48ef4a2c0275f0f92ebbe0f0f19b840c3 Mon Sep 17 00:00:00 2001 From: DHR60 Date: Fri, 27 Feb 2026 17:00:39 +0800 Subject: [PATCH] Scroll to new group node --- v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs b/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs index 8aa06cfe..f62573c0 100644 --- a/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/ProfilesViewModel.cs @@ -8,6 +8,7 @@ public class ProfilesViewModel : MyReactiveObject private string _serverFilter = string.Empty; private Dictionary _dicHeaderSort = new(); private SpeedtestService? _speedtestService; + private string? _pendingSelectIndexId; #endregion private prop @@ -362,15 +363,14 @@ public class ProfilesViewModel : MyReactiveObject ProfileItems.AddRange(lstModel); if (lstModel.Count > 0) { - var selected = lstModel.FirstOrDefault(t => t.IndexId == _config.IndexId); - if (selected != null) + ProfileItemModel? selected = null; + if (!_pendingSelectIndexId.IsNullOrEmpty()) { - SelectedProfile = selected; - } - else - { - SelectedProfile = lstModel.First(); + selected = lstModel.FirstOrDefault(t => t.IndexId == _pendingSelectIndexId); + _pendingSelectIndexId = null; } + selected ??= lstModel.FirstOrDefault(t => t.IndexId == _config.IndexId); + SelectedProfile = selected ?? lstModel.First(); } await _updateView?.Invoke(EViewAction.DispatcherRefreshServersBiz, null); @@ -619,6 +619,7 @@ public class ProfilesViewModel : MyReactiveObject NoticeManager.Instance.Enqueue(ResUI.OperationFailed); return; } + _pendingSelectIndexId = ret.Data?.ToString(); await RefreshServers(); }