Forge
csharpdeeb25a2
1using Avalonia.Controls;
2using Avalonia.Input;
3using Avalonia.Interactivity;
4using CascadeIDE.Models.Shell;
5
6namespace CascadeIDE.Views;
7
8/// <summary>TopLevel со сплитом PFD | MFD для пресета <c>(xP+yM)(F)</c> — ADR 0017.</summary>
9public partial class PmSplitHostWindow : PointerTrackingWindow
10{
11 public PmSplitHostWindow()
12 {
13 InitializeComponent();
14 AddHandler(InputElement.KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true);
15 Loaded += OnLoaded;
16 Activated += OnActivated;
17 }
18
19 private void OnLoaded(object? sender, RoutedEventArgs e)
20 {
21 if (PmSplitRootGrid is not { } grid)
22 return;
23 if (DataContext is not ViewModels.MainWindowViewModel vm)
24 return;
25 grid.ColumnDefinitions.Clear();
26 foreach (var col in ColumnDefinitions.Parse(vm.PmSplitHostColumnDefinitions))
27 grid.ColumnDefinitions.Add(col);
28 }
29
30 private void OnTunnelKeyDown(object? sender, KeyEventArgs e)
31 {
32 if (DataContext is not ViewModels.MainWindowViewModel vm)
33 return;
34 vm.CommandPaletteHost = CommandPaletteHost.PmSplitHost;
35 MainWindowHotkeyService.TryHandleTunnelKeyDownFromWindow(nameof(PmSplitHostWindow), e, vm);
36 }
37
38 private void OnActivated(object? sender, EventArgs e)
39 {
40 if (DataContext is ViewModels.MainWindowViewModel vm)
41 vm.CommandPaletteHost = CommandPaletteHost.PmSplitHost;
42 }
43}
44
View only · write via MCP/CIDE