Browse Source

-Bug fix when restoring layout from xml. all of the "Sides" like leftside and rightside objects were being nulled out causing null reference exceptions when you tried to "unpin" a panel on one of the sides.

pull/1271/head
Paul J Aicher 9 years ago
parent
commit
8fa3191ea9
  1. 43
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs

43
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs

@ -17,12 +17,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Windows;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Windows.Markup; using System.Windows.Markup;
using System.Xml.Serialization; using System.Xml.Serialization;
using Standard;
using System.Xml; using System.Xml;
using System.Xml.Schema; using System.Xml.Schema;
@ -690,30 +687,10 @@ namespace Xceed.Wpf.AvalonDock.Layout
} }
} }
TopSide = ( LayoutAnchorSide )ReadElement( reader ); TopSide = GetLayoutAnchorSide(reader);
if( TopSide != null ) RightSide = GetLayoutAnchorSide(reader);
{ LeftSide = GetLayoutAnchorSide(reader);
TopSide.Children.Add( ( LayoutAnchorGroup )ReadElement( reader ) ); BottomSide = GetLayoutAnchorSide(reader);
reader.Read();
}
RightSide = ( LayoutAnchorSide )ReadElement( reader );
if( RightSide != null )
{
RightSide.Children.Add( ( LayoutAnchorGroup )ReadElement( reader ) );
reader.Read();
}
LeftSide = ( LayoutAnchorSide )ReadElement( reader );
if( LeftSide != null )
{
LeftSide.Children.Add( ( LayoutAnchorGroup )ReadElement( reader ) );
reader.Read();
}
BottomSide = ( LayoutAnchorSide )ReadElement( reader );
if( BottomSide != null )
{
BottomSide.Children.Add( ( LayoutAnchorGroup )ReadElement( reader ) );
reader.Read();
}
FloatingWindows.Clear(); FloatingWindows.Clear();
var floatingWindows = ReadElementList(reader); var floatingWindows = ReadElementList(reader);
@ -730,6 +707,18 @@ namespace Xceed.Wpf.AvalonDock.Layout
} }
} }
private LayoutAnchorSide GetLayoutAnchorSide(XmlReader reader)
{
var side = (LayoutAnchorSide)ReadElement(reader);
if (side != null)
{
side.Children.Add((LayoutAnchorGroup)ReadElement(reader));
reader.Read();
}
return side ?? new LayoutAnchorSide();
}
private List<ILayoutPanelElement> ReadRootPanel(XmlReader reader) private List<ILayoutPanelElement> ReadRootPanel(XmlReader reader)
{ {
var result = new List<ILayoutPanelElement>(); var result = new List<ILayoutPanelElement>();

Loading…
Cancel
Save