From 3b0c57be8468500c34e6b44c8a80dab98969c9cf Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 30 Apr 2025 21:38:46 +0800 Subject: [PATCH] feature: supports to re-order workspaces (#1261) Signed-off-by: leo --- src/ViewModels/ConfigureWorkspace.cs | 31 ++++++++++++++++++++++- src/Views/ConfigureWorkspace.axaml | 38 +++++++++++++++++++++------- 2 files changed, 59 insertions(+), 10 deletions(-) diff --git a/src/ViewModels/ConfigureWorkspace.cs b/src/ViewModels/ConfigureWorkspace.cs index 6dc0f82e..047a0cc7 100644 --- a/src/ViewModels/ConfigureWorkspace.cs +++ b/src/ViewModels/ConfigureWorkspace.cs @@ -9,7 +9,6 @@ namespace SourceGit.ViewModels public AvaloniaList Workspaces { get; - private set; } public Workspace Selected @@ -51,6 +50,36 @@ namespace SourceGit.ViewModels Workspaces.Remove(_selected); } + public void MoveSelectedUp() + { + if (_selected == null) + return; + + var idx = Workspaces.IndexOf(_selected); + if (idx == 0) + return; + + Workspaces.Move(idx - 1, idx); + + Preferences.Instance.Workspaces.RemoveAt(idx); + Preferences.Instance.Workspaces.Insert(idx - 1, _selected); + } + + public void MoveSelectedDown() + { + if (_selected == null) + return; + + var idx = Workspaces.IndexOf(_selected); + if (idx == Workspaces.Count - 1) + return; + + Workspaces.Move(idx + 1, idx); + + Preferences.Instance.Workspaces.RemoveAt(idx); + Preferences.Instance.Workspaces.Insert(idx + 1, _selected); + } + private Workspace _selected = null; private bool _canDeleteSelected = false; } diff --git a/src/Views/ConfigureWorkspace.axaml b/src/Views/ConfigureWorkspace.axaml index 169df154..c65b8879 100644 --- a/src/Views/ConfigureWorkspace.axaml +++ b/src/Views/ConfigureWorkspace.axaml @@ -79,19 +79,39 @@ - - - - - - - - - + + +