Skip to content

Commit e7bd7bb

Browse files
committed
refactor: command palette auto-selection (#1937)
Signed-off-by: leo <[email protected]>
1 parent e6de365 commit e7bd7bb

14 files changed

+66
-22
lines changed

src/ViewModels/BlameCommandPalette.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,28 @@ private void UpdateVisible()
9191
if (string.IsNullOrEmpty(_filter))
9292
{
9393
VisibleFiles = _repoFiles;
94+
95+
if (string.IsNullOrEmpty(_selectedFile))
96+
SelectedFile = _repoFiles[0];
9497
}
9598
else
9699
{
97100
var visible = new List<string>();
101+
98102
foreach (var f in _repoFiles)
99103
{
100104
if (f.Contains(_filter, StringComparison.OrdinalIgnoreCase))
101105
visible.Add(f);
102106
}
107+
108+
var autoSelected = _selectedFile;
109+
if (visible.Count == 0)
110+
autoSelected = null;
111+
else if (string.IsNullOrEmpty(_selectedFile) || !visible.Contains(_selectedFile))
112+
autoSelected = visible[0];
113+
103114
VisibleFiles = visible;
115+
SelectedFile = autoSelected;
104116
}
105117
}
106118
}

src/ViewModels/BranchCompareCommandPalette.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,14 @@ private void UpdateBranches()
7979
return l.IsLocal ? -1 : 1;
8080
});
8181

82+
var autoSelected = _selectedBranch;
83+
if (branches.Count == 0)
84+
autoSelected = null;
85+
else if (_selectedBranch == null || !branches.Contains(_selectedBranch))
86+
autoSelected = branches[0];
87+
8288
Branches = branches;
89+
SelectedBranch = autoSelected;
8390
}
8491

8592
private Launcher _launcher;

src/ViewModels/CheckoutCommandPalette.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,14 @@ private void UpdateBranches()
8484
return l.IsLocal ? -1 : 1;
8585
});
8686

87+
var autoSelected = _selectedBranch;
88+
if (branches.Count == 0)
89+
autoSelected = null;
90+
else if (_selectedBranch == null || !branches.Contains(_selectedBranch))
91+
autoSelected = branches[0];
92+
8793
Branches = branches;
94+
SelectedBranch = autoSelected;
8895
}
8996

9097
private Launcher _launcher;

src/ViewModels/FileHistoryCommandPalette.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,28 @@ private void UpdateVisible()
8585
if (string.IsNullOrEmpty(_filter))
8686
{
8787
VisibleFiles = _repoFiles;
88+
89+
if (string.IsNullOrEmpty(_selectedFile))
90+
SelectedFile = _repoFiles[0];
8891
}
8992
else
9093
{
9194
var visible = new List<string>();
95+
9296
foreach (var f in _repoFiles)
9397
{
9498
if (f.Contains(_filter, StringComparison.OrdinalIgnoreCase))
9599
visible.Add(f);
96100
}
101+
102+
var autoSelected = _selectedFile;
103+
if (visible.Count == 0)
104+
autoSelected = null;
105+
else if (string.IsNullOrEmpty(_selectedFile) || !visible.Contains(_selectedFile))
106+
autoSelected = visible[0];
107+
97108
VisibleFiles = visible;
109+
SelectedFile = autoSelected;
98110
}
99111
}
100112
}

src/ViewModels/MergeCommandPalette.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,14 @@ private void UpdateBranches()
8080
return l.IsLocal ? -1 : 1;
8181
});
8282

83+
var autoSelected = _selectedBranch;
84+
if (branches.Count == 0)
85+
autoSelected = null;
86+
else if (_selectedBranch == null || !branches.Contains(_selectedBranch))
87+
autoSelected = branches[0];
88+
8389
Branches = branches;
90+
SelectedBranch = autoSelected;
8491
}
8592

8693
private Launcher _launcher = null;

src/ViewModels/OpenFileCommandPalette.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,28 @@ private void UpdateVisible()
8686
if (string.IsNullOrEmpty(_filter))
8787
{
8888
VisibleFiles = _repoFiles;
89+
90+
if (string.IsNullOrEmpty(_selectedFile))
91+
SelectedFile = _repoFiles[0];
8992
}
9093
else
9194
{
9295
var visible = new List<string>();
96+
9397
foreach (var f in _repoFiles)
9498
{
9599
if (f.Contains(_filter, StringComparison.OrdinalIgnoreCase))
96100
visible.Add(f);
97101
}
102+
103+
var autoSelected = _selectedFile;
104+
if (visible.Count == 0)
105+
autoSelected = null;
106+
else if (string.IsNullOrEmpty(_selectedFile) || !visible.Contains(_selectedFile))
107+
autoSelected = visible[0];
108+
98109
VisibleFiles = visible;
110+
SelectedFile = autoSelected;
99111
}
100112
}
101113
}

src/ViewModels/RepositoryCommandPalette.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public RepositoryCommandPalette(Launcher launcher, Repository repo)
8282
}));
8383

8484
_visibleCmds = _cmds;
85+
_selectedCmd = _cmds[0];
8586
}
8687

8788
public override void Cleanup()
@@ -116,13 +117,20 @@ private void UpdateVisible()
116117
else
117118
{
118119
var visible = new List<RepositoryCommandPaletteCmd>();
119-
foreach (var cmd in VisibleCmds)
120+
121+
foreach (var cmd in _cmds)
120122
{
121123
if (cmd.Key.Contains(_filter, StringComparison.OrdinalIgnoreCase) ||
122124
cmd.Label.Contains(_filter, StringComparison.OrdinalIgnoreCase))
123125
visible.Add(cmd);
124126
}
127+
128+
var autoSelected = _selectedCmd;
129+
if (!visible.Contains(_selectedCmd))
130+
autoSelected = visible.Count > 0 ? visible[0] : null;
131+
125132
VisibleCmds = visible;
133+
SelectedCmd = autoSelected;
126134
}
127135
}
128136

src/Views/BlameCommandPalette.axaml.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ protected override void OnKeyDown(KeyEventArgs e)
3636
if (FilterTextBox.IsKeyboardFocusWithin)
3737
{
3838
if (vm.VisibleFiles.Count > 0)
39-
{
4039
FileListBox.Focus(NavigationMethod.Directional);
41-
vm.SelectedFile = vm.VisibleFiles[0];
42-
}
4340

4441
e.Handled = true;
4542
return;

src/Views/BranchCompareCommandPalette.axaml.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ protected override void OnKeyDown(KeyEventArgs e)
3636
if (FilterTextBox.IsKeyboardFocusWithin)
3737
{
3838
if (vm.Branches.Count > 0)
39-
{
4039
BranchListBox.Focus(NavigationMethod.Directional);
41-
vm.SelectedBranch = vm.Branches[0];
42-
}
4340

4441
e.Handled = true;
4542
return;

src/Views/CheckoutCommandPalette.axaml.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ protected override async void OnKeyDown(KeyEventArgs e)
3636
if (FilterTextBox.IsKeyboardFocusWithin)
3737
{
3838
if (vm.Branches.Count > 0)
39-
{
4039
BranchListBox.Focus(NavigationMethod.Directional);
41-
vm.SelectedBranch = vm.Branches[0];
42-
}
4340

4441
e.Handled = true;
4542
return;

0 commit comments

Comments
 (0)