mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-25 22:25:00 +00:00
optimize<*>: add a static method CreateMenuIcon to App. Restore working copy changes' selection state after refreshed
This commit is contained in:
parent
9c3294c285
commit
2aacec75b4
7 changed files with 217 additions and 292 deletions
|
@ -60,6 +60,7 @@
|
|||
<DataGrid x:Name="unstagedList"
|
||||
Background="Transparent"
|
||||
ItemsSource="{Binding Unstaged}"
|
||||
SelectedItem="{Binding SelectedUnstagedChange, Mode=TwoWay}"
|
||||
SelectionMode="Extended"
|
||||
CanUserReorderColumns="False"
|
||||
CanUserResizeColumns="False"
|
||||
|
@ -70,7 +71,6 @@
|
|||
RowHeight="26"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnUnstagedListSelectionChanged"
|
||||
KeyDown="OnUnstagedListKeyDown"
|
||||
ContextRequested="OnUnstagedListContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=UnstagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsList}}">
|
||||
|
@ -96,6 +96,7 @@
|
|||
<DataGrid x:Name="unstagedGrid"
|
||||
Background="Transparent"
|
||||
ItemsSource="{Binding Unstaged}"
|
||||
SelectedItem="{Binding SelectedUnstagedChange, Mode=TwoWay}"
|
||||
SelectionMode="Extended"
|
||||
CanUserReorderColumns="False"
|
||||
CanUserResizeColumns="False"
|
||||
|
@ -106,7 +107,6 @@
|
|||
RowHeight="26"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnUnstagedListSelectionChanged"
|
||||
KeyDown="OnUnstagedListKeyDown"
|
||||
ContextRequested="OnUnstagedListContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=UnstagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsGrid}}">
|
||||
|
@ -139,11 +139,11 @@
|
|||
|
||||
<TreeView x:Name="unstagedTree"
|
||||
ItemsSource="{Binding UnstagedTree}"
|
||||
SelectedItem="{Binding SelectedUnstagedTreeNode, Mode=TwoWay}"
|
||||
SelectionMode="Multiple"
|
||||
AutoScrollToSelectedItem="True"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnUnstagedTreeViewSelectionChanged"
|
||||
KeyDown="OnUnstagedTreeViewKeyDown"
|
||||
ContextRequested="OnUnstagedTreeViewContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=UnstagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsTree}}">
|
||||
|
@ -185,6 +185,7 @@
|
|||
<DataGrid x:Name="stagedList"
|
||||
Background="Transparent"
|
||||
ItemsSource="{Binding Staged}"
|
||||
SelectedItem="{Binding SelectedStagedChange, Mode=TwoWay}"
|
||||
SelectionMode="Extended"
|
||||
CanUserReorderColumns="False"
|
||||
CanUserResizeColumns="False"
|
||||
|
@ -195,7 +196,6 @@
|
|||
RowHeight="26"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnStagedListSelectionChanged"
|
||||
KeyDown="OnStagedListKeyDown"
|
||||
ContextRequested="OnStagedListContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=StagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsList}}">
|
||||
|
@ -221,6 +221,7 @@
|
|||
<DataGrid x:Name="stagedGrid"
|
||||
Background="Transparent"
|
||||
ItemsSource="{Binding Staged}"
|
||||
SelectedItem="{Binding SelectedStagedChange, Mode=TwoWay}"
|
||||
SelectionMode="Extended"
|
||||
CanUserReorderColumns="False"
|
||||
CanUserResizeColumns="False"
|
||||
|
@ -231,7 +232,6 @@
|
|||
RowHeight="26"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnStagedListSelectionChanged"
|
||||
KeyDown="OnStagedListKeyDown"
|
||||
ContextRequested="OnStagedListContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=StagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsGrid}}">
|
||||
|
@ -264,11 +264,11 @@
|
|||
|
||||
<TreeView x:Name="stagedTree"
|
||||
ItemsSource="{Binding StagedTree}"
|
||||
SelectedItem="{Binding SelectedStagedTreeNode, Mode=TwoWay}"
|
||||
SelectionMode="Multiple"
|
||||
AutoScrollToSelectedItem="True"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
SelectionChanged="OnStagedTreeViewSelectionChanged"
|
||||
KeyDown="OnStagedTreeViewKeyDown"
|
||||
ContextRequested="OnStagedTreeViewContextRequested"
|
||||
IsVisible="{Binding Source={x:Static vm:Preference.Instance}, Path=StagedChangeViewMode, Converter={x:Static c:ChangeViewModeConverters.IsTree}}">
|
||||
|
|
|
@ -19,132 +19,6 @@ namespace SourceGit.Views {
|
|||
GC.Collect();
|
||||
}
|
||||
|
||||
private void OnUnstagedListSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var vm = DataContext as ViewModels.WorkingCopy;
|
||||
if (vm == null) return;
|
||||
|
||||
var datagrid = sender as DataGrid;
|
||||
if (datagrid.SelectedItems.Count == 0) {
|
||||
if (stagedList.SelectedItem == null &&
|
||||
stagedGrid.SelectedItem == null &&
|
||||
stagedTree.SelectedItem == null) {
|
||||
vm.SetDetail(null, true);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
stagedList.SelectedItems.Clear();
|
||||
stagedGrid.SelectedItems.Clear();
|
||||
stagedTree.SelectedItems.Clear();
|
||||
|
||||
if (datagrid.SelectedItems.Count == 1) {
|
||||
vm.SetDetail(datagrid.SelectedItem as Models.Change, true);
|
||||
} else {
|
||||
vm.SetDetail(null, true);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void OnUnstagedTreeViewSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var vm = DataContext as ViewModels.WorkingCopy;
|
||||
if (vm == null) return;
|
||||
|
||||
var tree = sender as TreeView;
|
||||
if (tree.SelectedItems.Count == 0) {
|
||||
if (stagedList.SelectedItem == null &&
|
||||
stagedGrid.SelectedItem == null &&
|
||||
stagedTree.SelectedItem == null) {
|
||||
vm.SetDetail(null, true);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
stagedList.SelectedItems.Clear();
|
||||
stagedGrid.SelectedItems.Clear();
|
||||
stagedTree.SelectedItems.Clear();
|
||||
|
||||
if (tree.SelectedItems.Count == 1) {
|
||||
var node = tree.SelectedItem as ViewModels.FileTreeNode;
|
||||
if (node != null && !node.IsFolder) {
|
||||
vm.SetDetail(node.Backend as Models.Change, true);
|
||||
} else {
|
||||
vm.SetDetail(null, true);
|
||||
}
|
||||
} else {
|
||||
vm.SetDetail(null, true);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void OnStagedListSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var vm = DataContext as ViewModels.WorkingCopy;
|
||||
if (vm == null) return;
|
||||
|
||||
var datagrid = sender as DataGrid;
|
||||
if (datagrid.SelectedItems.Count == 0) {
|
||||
if (unstagedList.SelectedItem == null &&
|
||||
unstagedGrid.SelectedItem == null &&
|
||||
unstagedTree.SelectedItem == null) {
|
||||
vm.SetDetail(null, false);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
unstagedList.SelectedItems.Clear();
|
||||
unstagedGrid.SelectedItems.Clear();
|
||||
unstagedTree.SelectedItems.Clear();
|
||||
|
||||
if (datagrid.SelectedItems.Count == 1) {
|
||||
vm.SetDetail(datagrid.SelectedItem as Models.Change, false);
|
||||
} else {
|
||||
vm.SetDetail(null, false);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void OnStagedTreeViewSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var vm = DataContext as ViewModels.WorkingCopy;
|
||||
if (vm == null) return;
|
||||
|
||||
var tree = sender as TreeView;
|
||||
if (tree.SelectedItems.Count == 0) {
|
||||
if (unstagedList.SelectedItem == null &&
|
||||
unstagedGrid.SelectedItem == null &&
|
||||
unstagedTree.SelectedItem == null) {
|
||||
vm.SetDetail(null, false);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
unstagedList.SelectedItems.Clear();
|
||||
unstagedGrid.SelectedItems.Clear();
|
||||
unstagedTree.SelectedItems.Clear();
|
||||
|
||||
if (tree.SelectedItems.Count == 1) {
|
||||
var node = tree.SelectedItem as ViewModels.FileTreeNode;
|
||||
if (node != null && !node.IsFolder) {
|
||||
vm.SetDetail(node.Backend as Models.Change, false);
|
||||
} else {
|
||||
vm.SetDetail(null, false);
|
||||
}
|
||||
} else {
|
||||
vm.SetDetail(null, false);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void ViewAssumeUnchanged(object sender, RoutedEventArgs e) {
|
||||
var repoPage = this.FindAncestorOfType<Repository>();
|
||||
if (repoPage != null) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue