diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 7f5a1232..e248967a 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -616,15 +616,9 @@ namespace SourceGit.ViewModels Task.Run(RefreshCommits); } - public void StashAll() + public void StashAll(bool autoStart) { - if (PopupHost.CanCreatePopup()) - { - var changes = new List(); - changes.AddRange(_workingCopy.Unstaged); - changes.AddRange(_workingCopy.Staged); - PopupHost.ShowPopup(new StashChanges(this, changes, true)); - } + _workingCopy?.StashAll(autoStart); } public void GotoResolve() diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs index 3e93d82b..c72900ec 100644 --- a/src/ViewModels/WorkingCopy.cs +++ b/src/ViewModels/WorkingCopy.cs @@ -317,6 +317,17 @@ namespace SourceGit.ViewModels dialog.ShowDialog(toplevel); } + public void StashAll(bool autoStart) + { + if (!PopupHost.CanCreatePopup()) + return; + + if (autoStart) + PopupHost.ShowAndStartPopup(new StashChanges(_repo, _cached, true)); + else + PopupHost.ShowPopup(new StashChanges(_repo, _cached, true)); + } + public void StageSelected() { StageChanges(_selectedUnstaged); diff --git a/src/Views/RepositoryToolbar.axaml b/src/Views/RepositoryToolbar.axaml index 45186fa7..b76cfd63 100644 --- a/src/Views/RepositoryToolbar.axaml +++ b/src/Views/RepositoryToolbar.axaml @@ -64,7 +64,14 @@ - diff --git a/src/Views/RepositoryToolbar.axaml.cs b/src/Views/RepositoryToolbar.axaml.cs index 37963d99..6fad104d 100644 --- a/src/Views/RepositoryToolbar.axaml.cs +++ b/src/Views/RepositoryToolbar.axaml.cs @@ -71,6 +71,12 @@ namespace SourceGit.Views e.Handled = true; } + private void StashAll(object _, RoutedEventArgs e) + { + (DataContext as ViewModels.Repository)?.StashAll(_hasCtrl); + e.Handled = true; + } + private void OpenGitFlowMenu(object sender, RoutedEventArgs e) { if (DataContext is ViewModels.Repository repo)