mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-16 16:05:00 +00:00

- Use `ViewModels.StashesPage.SelectedStash` instead of `sender is not ListBox { SelectedValue: Models.Stash stash }` - In tags view, `SelectedItem` can be `Models.Tag` or `ViewModels.TagTreeNode` - In logs window, `vm.SelectedLog` may be null Signed-off-by: leo <longshuang@msn.cn>
59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Input;
|
|
|
|
namespace SourceGit.Views
|
|
{
|
|
public partial class StashesPage : UserControl
|
|
{
|
|
public StashesPage()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void OnMainLayoutSizeChanged(object sender, SizeChangedEventArgs e)
|
|
{
|
|
var grid = sender as Grid;
|
|
if (grid == null)
|
|
return;
|
|
|
|
var layout = ViewModels.Preferences.Instance.Layout;
|
|
var width = grid.Bounds.Width;
|
|
var maxLeft = width - 304;
|
|
|
|
if (layout.StashesLeftWidth.Value - maxLeft > 1.0)
|
|
layout.StashesLeftWidth = new GridLength(maxLeft, GridUnitType.Pixel);
|
|
}
|
|
|
|
private void OnStashListKeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.Key is not (Key.Delete or Key.Back))
|
|
return;
|
|
|
|
if (DataContext is not ViewModels.StashesPage vm)
|
|
return;
|
|
|
|
vm.Drop(vm.SelectedStash);
|
|
e.Handled = true;
|
|
}
|
|
|
|
private void OnStashContextRequested(object sender, ContextRequestedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.StashesPage vm && sender is Border border)
|
|
{
|
|
var menu = vm.MakeContextMenu(border.DataContext as Models.Stash);
|
|
menu?.Open(border);
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
|
|
private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e)
|
|
{
|
|
if (DataContext is ViewModels.StashesPage vm && sender is Grid grid)
|
|
{
|
|
var menu = vm.MakeContextMenuForChange(grid.DataContext as Models.Change);
|
|
menu?.Open(grid);
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|