Browse Source

Fix broken Window menu and ResetLayout

pull/3356/head
Siegfried Pammer 5 months ago
parent
commit
44da7ce023
  1. 19
      ILSpy/Docking/DockWorkspace.cs
  2. 2
      ILSpy/MainWindow.xaml

19
ILSpy/Docking/DockWorkspace.cs

@ -25,6 +25,7 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Threading; using System.Windows.Threading;
using AvalonDock; using AvalonDock;
@ -50,6 +51,7 @@ namespace ICSharpCode.ILSpy.Docking
private readonly IExportProvider exportProvider; private readonly IExportProvider exportProvider;
private readonly ObservableCollection<TabPageModel> tabPages = []; private readonly ObservableCollection<TabPageModel> tabPages = [];
private ReadOnlyCollection<ToolPaneModel> toolPanes;
readonly SessionSettings sessionSettings; readonly SessionSettings sessionSettings;
@ -123,9 +125,11 @@ namespace ICSharpCode.ILSpy.Docking
public ReadOnlyObservableCollection<TabPageModel> TabPages { get; } public ReadOnlyObservableCollection<TabPageModel> TabPages { get; }
private ToolPaneModel[] toolPanes = []; public ReadOnlyCollection<ToolPaneModel> ToolPanes => toolPanes ??= exportProvider
.GetExportedValues<ToolPaneModel>("ToolPane")
public ReadOnlyCollection<ToolPaneModel> ToolPanes => toolPanes.AsReadOnly(); .OrderBy(item => item.Title)
.ToArray()
.AsReadOnly();
public bool ShowToolPane(string contentId) public bool ShowToolPane(string contentId)
{ {
@ -181,12 +185,6 @@ namespace ICSharpCode.ILSpy.Docking
AddTabPage(); AddTabPage();
} }
toolPanes = exportProvider
.GetExportedValues<ToolPaneModel>("ToolPane")
.OrderBy(item => item.Title)
.ToArray();
OnPropertyChanged(nameof(ToolPanes));
DockingManager.LayoutUpdateStrategy = this; DockingManager.LayoutUpdateStrategy = this;
XmlLayoutSerializer serializer = new XmlLayoutSerializer(DockingManager); XmlLayoutSerializer serializer = new XmlLayoutSerializer(DockingManager);
serializer.LayoutSerializationCallback += LayoutSerializationCallback; serializer.LayoutSerializationCallback += LayoutSerializationCallback;
@ -198,6 +196,9 @@ namespace ICSharpCode.ILSpy.Docking
{ {
serializer.LayoutSerializationCallback -= LayoutSerializationCallback; serializer.LayoutSerializationCallback -= LayoutSerializationCallback;
} }
DockingManager.SetBinding(DockingManager.AnchorablesSourceProperty, new Binding(nameof(ToolPanes)));
DockingManager.SetBinding(DockingManager.DocumentsSourceProperty, new Binding(nameof(TabPages)));
} }
void LayoutSerializationCallback(object sender, LayoutSerializationCallbackEventArgs e) void LayoutSerializationCallback(object sender, LayoutSerializationCallbackEventArgs e)

2
ILSpy/MainWindow.xaml

@ -67,8 +67,6 @@
<avalondock:DockingManager x:Name="DockManager" <avalondock:DockingManager x:Name="DockManager"
DataContext="{Binding Workspace}" DataContext="{Binding Workspace}"
AnchorablesSource="{Binding ToolPanes}"
DocumentsSource="{Binding TabPages}"
ActiveContent="{Binding ActiveTabPage, Mode=TwoWay, Converter={docking:TabPageGuardConverter}}" ActiveContent="{Binding ActiveTabPage, Mode=TwoWay, Converter={docking:TabPageGuardConverter}}"
AllowMixedOrientation="True"> AllowMixedOrientation="True">

Loading…
Cancel
Save