diff --git a/GitUI/CommandsDialogs/FormBrowse.InitRevisionGrid.cs b/GitUI/CommandsDialogs/FormBrowse.InitRevisionGrid.cs index 176dedaff52..7e3cf3500bc 100644 --- a/GitUI/CommandsDialogs/FormBrowse.InitRevisionGrid.cs +++ b/GitUI/CommandsDialogs/FormBrowse.InitRevisionGrid.cs @@ -22,7 +22,9 @@ private void InitRevisionGrid(ObjectId? selectedId, ObjectId? firstId, bool isBl }) .FileAndForget(); }; + RevisionGrid.MenuCommands.MenuChanged += (sender, e) => _formBrowseMenus.OnMenuCommandsPropertyChanged(); + RevisionGrid.FilterChanged += (sender, e) => { Text = _appTitleGenerator.Generate(Module.WorkingDir, Module.IsValidGitWorkingDir(), RevisionGrid.CurrentBranch.Value, TranslatedStrings.NoBranch, e.PathFilter); @@ -38,6 +40,7 @@ private void InitRevisionGrid(ObjectId? selectedId, ObjectId? firstId, bool isBl revisionDiff.FallbackFollowedFile = path; fileTree.FallbackFollowedFile = path; }; + RevisionGrid.RevisionsLoading += (sender, e) => { // The FileTree tab should be shown at first start, in "filehistory" mode @@ -54,21 +57,15 @@ private void InitRevisionGrid(ObjectId? selectedId, ObjectId? firstId, bool isBl return; } - // Apply filtering when: - // 1. don't show reflog, and - // 2. one of the following - // a) show the current branch only, or - // b) filter on specific branch - // (this check ignores other revision filters) - bool isFiltering = !AppSettings.ShowReflogReferences - && (AppSettings.ShowCurrentBranchOnly || AppSettings.BranchFilterEnabled); - repoObjectsTree.Refresh(isFiltering, e.ForceRefresh, e.GetRefs); + RefreshLeftPanel(e.ForceRefresh, e.GetRefs); }; + RevisionGrid.SelectionChanged += (sender, e) => { _selectedRevisionUpdatedTargets = UpdateTargets.None; RefreshSelection(); }; + RevisionGrid.ToggledBetweenArtificialAndHeadCommits += (s, e) => { if (!revisionDiff.Visible) diff --git a/GitUI/CommandsDialogs/FormBrowse.cs b/GitUI/CommandsDialogs/FormBrowse.cs index e7e9a39220b..854056633ba 100644 --- a/GitUI/CommandsDialogs/FormBrowse.cs +++ b/GitUI/CommandsDialogs/FormBrowse.cs @@ -1209,6 +1209,19 @@ private async Task FillGpgInfoAsync(GitRevision? revision) revisionGpgInfo1.DisplayGpgInfo(info); } + private void RefreshLeftPanel(bool forceRefresh, Func> getRefs) + { + // Apply filtering when: + // 1. don't show reflog, and + // 2. one of the following + // a) show the current branch only, or + // b) filter on specific branch + // (this check ignores other revision filters) + bool isFiltering = !AppSettings.ShowReflogReferences + && (AppSettings.ShowCurrentBranchOnly || AppSettings.BranchFilterEnabled); + repoObjectsTree.Refresh(isFiltering, forceRefresh, getRefs); + } + private void OpenToolStripMenuItemClick(object sender, EventArgs e) { GitModule? module = FormOpenDirectory.OpenModule(this, Module); @@ -2933,6 +2946,11 @@ private void toggleBranchTreePanel_Click(object sender, EventArgs e) new Dictionary { { "ShowLeftPanel", MainSplitContainer.Panel1Collapsed.ToString() } }); RefreshLayoutToggleButtonStates(); + + if (!MainSplitContainer.Panel1Collapsed) + { + RefreshLeftPanel(forceRefresh: true, new FilteredGitRefsProvider(UICommands.GitModule).GetRefs); + } } private void CommitInfoPositionClick(object sender, EventArgs e)