diff --git a/src/Models/Repository.cs b/src/Models/Repository.cs index 7774e54d..ef1d9a9d 100644 --- a/src/Models/Repository.cs +++ b/src/Models/Repository.cs @@ -27,11 +27,20 @@ namespace SourceGit.Models { public string Name { get; set; } = ""; public string Path { get; set; } = ""; public string GitDir { get; set; } = ""; - public int Bookmark { get; set; } = 0; public long LastOpenTime { get; set; } = 0; public List SubTrees { get; set; } = new List(); public List Filters { get; set; } = new List(); public List CommitMessages { get; set; } = new List(); + + public int Bookmark { + get { return bookmark; } + set { + if (value != bookmark) { + bookmark = value; + Watcher.NotifyBookmarkChanged(this); + } + } + } #endregion #region PROPERTIES_RUNTIME @@ -122,5 +131,6 @@ namespace SourceGit.Models { } private readonly object updateFilterLock = new object(); + private int bookmark = 0; } } diff --git a/src/Models/Watcher.cs b/src/Models/Watcher.cs index c9bb6787..c05dadbf 100644 --- a/src/Models/Watcher.cs +++ b/src/Models/Watcher.cs @@ -103,12 +103,11 @@ namespace SourceGit.Models { } /// - /// 设置仓库标签变化 + /// 通知仓库标签变化 /// /// - /// - public static void SetBookmark(string repo, int bookmark) { - BookmarkChanged?.Invoke(repo, bookmark); + public static void NotifyBookmarkChanged(Repository repo) { + BookmarkChanged?.Invoke(repo.Path, repo.Bookmark); } /// diff --git a/src/Views/Widgets/PageTabBar.xaml.cs b/src/Views/Widgets/PageTabBar.xaml.cs index 0df9afc0..3214d0bc 100644 --- a/src/Views/Widgets/PageTabBar.xaml.cs +++ b/src/Views/Widgets/PageTabBar.xaml.cs @@ -364,7 +364,8 @@ namespace SourceGit.Views.Widgets { var refIdx = i; mark.Click += (o, ev) => { - Models.Watcher.SetBookmark(tab.Id, refIdx); + var repo = Models.Preference.Instance.FindRepository(tab.Id); + if (repo != null) repo.Bookmark = refIdx; ev.Handled = true; }; bookmark.Items.Add(mark); diff --git a/src/Views/Widgets/Welcome.xaml.cs b/src/Views/Widgets/Welcome.xaml.cs index 88e9ea1d..f1fc72a1 100644 --- a/src/Views/Widgets/Welcome.xaml.cs +++ b/src/Views/Widgets/Welcome.xaml.cs @@ -18,15 +18,9 @@ namespace SourceGit.Views.Widgets { public Welcome() { InitializeComponent(); UpdateVisibles(); - Models.Theme.AddListener(this, UpdateVisibles); - Models.Watcher.BookmarkChanged += (repoPath, bookmark) => { - var repo = Models.Preference.Instance.FindRepository(repoPath); - if (repo != null) { - repo.Bookmark = bookmark; - UpdateVisibles(); - } - }; + Models.Theme.AddListener(this, UpdateVisibles); + Models.Watcher.BookmarkChanged += (_, __) => { UpdateVisibles(); }; } #region FUNC_EVENTS @@ -148,7 +142,7 @@ namespace SourceGit.Views.Widgets { var refIdx = i; mark.Click += (o, ev) => { - Models.Watcher.SetBookmark(repo.Path, refIdx); + repo.Bookmark = refIdx; ev.Handled = true; }; bookmark.Items.Add(mark);