diff --git a/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs b/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs
index 1eb36b5d..0a60abc1 100644
--- a/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs
@@ -21,7 +21,7 @@ This program is provided to you under the terms of the Microsoft Public
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
- public const string BaseVersion = "3.4";
+ public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";
diff --git a/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml b/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
index f9f2a6c2..dd29b6a8 100644
--- a/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
+++ b/source/Components/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
@@ -456,6 +456,8 @@
-
-
diff --git a/source/Components/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs b/source/Components/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs
index 13f6f0c5..0a60abc1 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs
@@ -21,10 +21,10 @@ This program is provided to you under the terms of the Microsoft Public
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
- public const string BaseVersion = "3.4";
+ public const string BaseVersion = "3.5";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
-".0.11";
+ ".0.0";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string PublicKeyToken = "ba83ff368b7563c6";
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs
index 11005c7f..1d3b212d 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs
@@ -153,20 +153,23 @@ protected override void OnMouseLeave( System.Windows.Input.MouseEventArgs e )
var paneModel = pane.Model as LayoutAnchorablePane;
var manager = paneModel.Root.Manager;
- // Get psotion of this visual on screen
- var pos = this.PointToScreen(new Point(0, 0));
-
- // Transform screen point to WPF device independent point
- PresentationSource source = PresentationSource.FromVisual(this);
- Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(pos);
-
- // Log current delta between mouse and visual for use in drag cycle
- var mousePosition = this.PointToScreenDPI(Mouse.GetPosition(this));
-
- Point dragDelta = new Point(mousePosition.X - targetPoints.X,
- mousePosition.Y - targetPoints.Y);
-
- manager.StartDraggingFloatingWindowForPane( paneModel, dragDelta );
+ manager.StartDraggingFloatingWindowForPane( paneModel );
+ }
+ else
+ {
+ var model = this.Model;
+ if( model != null )
+ {
+ var root = model.Root;
+ if( root != null )
+ {
+ var manager = root.Manager;
+ if( manager != null )
+ {
+ manager.StartDraggingFloatingWindowForContent( model );
+ }
+ }
+ }
}
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs
index 799c8e11..485153d0 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs
@@ -45,8 +45,8 @@ static LayoutAnchorableFloatingWindowControl()
DefaultStyleKeyProperty.OverrideMetadata( typeof( LayoutAnchorableFloatingWindowControl ), new FrameworkPropertyMetadata( typeof( LayoutAnchorableFloatingWindowControl ) ) );
}
- internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow model )
- : base( model )
+ internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow model, bool isContentImmutable )
+ : base( model, isContentImmutable )
{
_model = model;
HideWindowCommand = new RelayCommand( ( p ) => OnExecuteHideWindowCommand( p ), ( p ) => CanExecuteHideWindowCommand( p ) );
@@ -54,6 +54,11 @@ internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow m
UpdateThemeResources();
}
+ internal LayoutAnchorableFloatingWindowControl( LayoutAnchorableFloatingWindow model)
+ : base( model, false )
+ {
+ }
+
#endregion
#region Properties
@@ -139,8 +144,11 @@ protected override void OnInitialized( EventArgs e )
protected override void OnClosed( EventArgs e )
{
var root = Model.Root;
- root.Manager.RemoveFloatingWindow( this );
- root.CollectGarbage();
+ if( root != null )
+ {
+ root.Manager.RemoveFloatingWindow( this );
+ root.CollectGarbage();
+ }
if( _overlayWindow != null )
{
_overlayWindow.Close();
@@ -149,13 +157,11 @@ protected override void OnClosed( EventArgs e )
base.OnClosed( e );
- if( !CloseInitiatedByUser )
+ if( !CloseInitiatedByUser && (root != null) )
{
root.FloatingWindows.Remove( _model );
}
- SetBinding(VisibilityProperty, string.Empty);
-
_model.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler( _model_PropertyChanged );
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs
index 8a542007..62824834 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableItem.cs
@@ -298,6 +298,15 @@ internal override void Detach()
base.Detach();
}
+ protected override bool CanExecuteDockAsDocumentCommand()
+ {
+ var canExecute = base.CanExecuteDockAsDocumentCommand();
+ if( canExecute && ( _anchorable != null ) )
+ return _anchorable.CanDockAsTabbedDocument;
+
+ return canExecute;
+ }
+
protected override void Close()
{
if( ( _anchorable.Root != null ) && ( _anchorable.Root.Manager != null ) )
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs
index d4a42003..6e847ece 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs
@@ -68,11 +68,8 @@ public ILayoutElement Model
protected override void OnGotKeyboardFocus( System.Windows.Input.KeyboardFocusChangedEventArgs e )
{
- if ((_model != null) && (_model.SelectedContent != null))
- {
- _model.SelectedContent.IsActive = true;
- }
-
+ _model.SelectedContent.IsActive = true;
+
base.OnGotKeyboardFocus( e );
}
@@ -80,20 +77,17 @@ protected override void OnMouseLeftButtonDown( System.Windows.Input.MouseButtonE
{
base.OnMouseLeftButtonDown( e );
- if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
- {
+ if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
- }
}
protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnMouseRightButtonDown( e );
- if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) )
- {
+ if( !e.Handled && _model.SelectedContent != null )
_model.SelectedContent.IsActive = true;
- }
+
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs
index 8a80b19e..9a78fa49 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs
@@ -28,7 +28,6 @@ public class LayoutAnchorableTabItem : Control
private bool _isMouseDown = false;
private static LayoutAnchorableTabItem _draggingItem = null;
- private static bool _cancelMouseLeave = false;
#endregion
@@ -147,10 +146,6 @@ protected override void OnMouseMove( System.Windows.Input.MouseEventArgs e )
_isMouseDown = false;
_draggingItem = null;
}
- else
- {
- _cancelMouseLeave = false;
- }
}
protected override void OnMouseLeftButtonUp( System.Windows.Input.MouseButtonEventArgs e )
@@ -168,23 +163,20 @@ protected override void OnMouseLeave( System.Windows.Input.MouseEventArgs e )
if( _isMouseDown && e.LeftButton == MouseButtonState.Pressed )
{
- // drag the item if the mouse leave is not canceled.
- // Mouse leave should be canceled when selecting a new tab to prevent automatic undock when Panel size is Auto.
- _draggingItem = !_cancelMouseLeave ? this : null;
+ _draggingItem = this;
}
_isMouseDown = false;
- _cancelMouseLeave = false;
}
protected override void OnMouseEnter( MouseEventArgs e )
{
base.OnMouseEnter( e );
- if (_draggingItem != null &&
- _draggingItem != this && // Fix #1354 https://github.com/xceedsoftware/wpftoolkit/issues/1354
- e.LeftButton == MouseButtonState.Pressed)
- {
+ if( _draggingItem != null
+ && _draggingItem != this
+ && e.LeftButton == MouseButtonState.Pressed )
+ {
var model = Model;
var container = model.Parent as ILayoutContainer;
var containerPane = model.Parent as ILayoutPane;
@@ -222,11 +214,7 @@ internal static void ResetDraggingItem()
{
_draggingItem = null;
}
- internal static void CancelMouseLeave()
- {
- _cancelMouseLeave = true;
- }
- #endregion
-}
+ #endregion
+ }
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs
index b59f1209..f56148b6 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutAutoHideWindowControl.cs
@@ -164,16 +164,6 @@ protected override System.Runtime.InteropServices.HandleRef BuildWindowCore( Sys
return new HandleRef( this, _internalHwndSource.Handle );
}
- protected override IntPtr WndProc( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled )
- {
- if( msg == Win32Helper.WM_WINDOWPOSCHANGING )
- {
- if( _internalHost_ContentRendered )
- Win32Helper.SetWindowPos( _internalHwndSource.Handle, Win32Helper.HWND_TOP, 0, 0, 0, 0, Win32Helper.SetWindowPosFlags.IgnoreMove | Win32Helper.SetWindowPosFlags.IgnoreResize );
- }
- return base.WndProc( hwnd, msg, wParam, lParam, ref handled );
- }
-
protected override void DestroyWindowCore( System.Runtime.InteropServices.HandleRef hwnd )
{
if( _internalHwndSource != null )
@@ -184,11 +174,6 @@ protected override void DestroyWindowCore( System.Runtime.InteropServices.Handle
}
}
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
- }
-
protected override bool HasFocusWithinCore()
{
return false;
@@ -243,6 +228,7 @@ internal void Show( LayoutAnchorControl anchor )
Visibility = System.Windows.Visibility.Visible;
InvalidateMeasure();
UpdateWindowPos();
+ Win32Helper.BringWindowToTop( _internalHwndSource.Handle );
}
internal void Hide()
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs
index bd8ddebd..329e6c66 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs
@@ -37,13 +37,18 @@ static LayoutDocumentFloatingWindowControl()
DefaultStyleKeyProperty.OverrideMetadata( typeof( LayoutDocumentFloatingWindowControl ), new FrameworkPropertyMetadata( typeof( LayoutDocumentFloatingWindowControl ) ) );
}
- internal LayoutDocumentFloatingWindowControl( LayoutDocumentFloatingWindow model )
- : base( model )
+ internal LayoutDocumentFloatingWindowControl( LayoutDocumentFloatingWindow model, bool isContentImmutable )
+ : base( model, isContentImmutable )
{
_model = model;
UpdateThemeResources();
}
+ internal LayoutDocumentFloatingWindowControl( LayoutDocumentFloatingWindow model )
+ : base( model, false )
+ {
+ }
+
#endregion
#region Properties
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs
index a087cd3e..79a3572e 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentTabItem.cs
@@ -143,6 +143,10 @@ protected override void OnMouseLeftButtonDown( System.Windows.Input.MouseButtonE
Model.IsActive = true;
+ var layoutDocument = Model as LayoutDocument;
+ if( ( layoutDocument != null ) && !layoutDocument.CanMove )
+ return;
+
if( e.ClickCount == 1 )
{
_mouseDownPoint = e.GetPosition( this );
@@ -257,21 +261,7 @@ private void StartDraggingFloatingWindowForContent()
( ( LayoutAnchorable )this.Model ).ResetCanCloseInternal();
}
var manager = this.Model.Root.Manager;
-
- // Get psotion of this visual on screen
- var pos = this.PointToScreen(new Point(0, 0));
-
- // Transform screen point to WPF device independent point
- PresentationSource source = PresentationSource.FromVisual(this);
- Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(pos);
-
- // Log current delta between mouse and visual for use in drag cycle
- var mousePosition = this.PointToScreenDPI(Mouse.GetPosition(this));
-
- Point dragDelta = new Point(mousePosition.X - targetPoints.X,
- mousePosition.Y - targetPoints.Y);
-
- manager.StartDraggingFloatingWindowForContent( this.Model, true, dragDelta );
+ manager.StartDraggingFloatingWindowForContent( this.Model );
}
#endregion
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs
index 5297dae0..98290ece 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs
@@ -41,6 +41,7 @@ public abstract class LayoutFloatingWindowControl : Window, ILayoutControl
private HwndSourceHook _hwndSrcHook;
private DragService _dragService = null;
private bool _internalCloseFlag = false;
+ private bool _isClosing = false;
#endregion
@@ -58,25 +59,20 @@ protected LayoutFloatingWindowControl( ILayoutElement model )
this.Loaded += new RoutedEventHandler( OnLoaded );
this.Unloaded += new RoutedEventHandler( OnUnloaded );
_model = model;
+ }
- DragDelta = default(Point);
+ protected LayoutFloatingWindowControl( ILayoutElement model, bool isContentImmutable )
+ : this( model )
+ {
+ this.IsContentImmutable = isContentImmutable;
}
#endregion
#region Properties
- ///
- /// Gets/Sets the X,Y delta between the elemnt being dragged and the
- /// mouse position. The value of this property is used during the drag
- /// cycle to position the dragged item under the mouse pointer.
- ///
- /// Set this property on intialization to ensure that
- /// the delta between mouse and control being dragged
- /// remains constant.
- ///
- internal Point DragDelta { get; set; }
#region Model
+
public abstract ILayoutElement Model
{
get;
@@ -84,6 +80,32 @@ public abstract ILayoutElement Model
#endregion
+ #region IsContentImmutable
+
+ ///
+ /// IsContentImmutable Dependency Property
+ ///
+ public static readonly DependencyProperty IsContentImmutableProperty = DependencyProperty.Register( "IsContentImmutable", typeof( bool ), typeof( LayoutFloatingWindowControl ),
+ new FrameworkPropertyMetadata( (bool)false ) );
+
+ ///
+ /// Gets/sets the IsContentImmutable property. This dependency property
+ /// indicates if the content can be modified.
+ ///
+ public bool IsContentImmutable
+ {
+ get
+ {
+ return (bool)GetValue( IsContentImmutableProperty );
+ }
+ private set
+ {
+ SetValue( IsContentImmutableProperty, value );
+ }
+ }
+
+ #endregion
+
#region IsDragging
///
@@ -313,7 +335,7 @@ protected virtual IntPtr FilterMessage( IntPtr hwnd, int msg, IntPtr wParam, Int
switch( msg )
{
case Win32Helper.WM_ACTIVATE:
- if( ( ( int )wParam & 0xFFFF ) == Win32Helper.WA_INACTIVE )
+ if( ( (int)wParam & 0xFFFF ) == Win32Helper.WA_INACTIVE )
{
if( lParam == this.GetParentWindowHandle() )
{
@@ -356,7 +378,7 @@ protected virtual IntPtr FilterMessage( IntPtr hwnd, int msg, IntPtr wParam, Int
}
break;
case Win32Helper.WM_SYSCOMMAND:
- int command = ( int )wParam & 0xFFF0;
+ int command = (int)wParam & 0xFFF0;
if( command == Win32Helper.SC_MAXIMIZE || command == Win32Helper.SC_RESTORE )
{
UpdateMaximizedState( command == Win32Helper.SC_MAXIMIZE );
@@ -371,15 +393,12 @@ protected virtual IntPtr FilterMessage( IntPtr hwnd, int msg, IntPtr wParam, Int
internal void InternalClose()
{
- // Check before Close in InternalClose
- // https://github.com/xceedsoftware/wpftoolkit/issues/1310
- if( _internalCloseFlag )
+ _internalCloseFlag = true;
+ if( !_isClosing )
{
- return;
+ _isClosing = true;
+ this.Close();
}
-
- _internalCloseFlag = true;
- Close();
}
#endregion
@@ -388,7 +407,14 @@ internal void InternalClose()
private static object CoerceContentValue( DependencyObject sender, object content )
{
- return new FloatingWindowContentHost( sender as LayoutFloatingWindowControl ) { Content = content as UIElement };
+ var lfwc = sender as LayoutFloatingWindowControl;
+ if( lfwc != null )
+ {
+ if( lfwc.IsLoaded && lfwc.IsContentImmutable )
+ return lfwc.Content;
+ return new FloatingWindowContentHost( sender as LayoutFloatingWindowControl ) { Content = content as UIElement };
+ }
+ return null;
}
private void OnLoaded( object sender, RoutedEventArgs e )
@@ -425,15 +451,11 @@ private void OnActivated( object sender, EventArgs e )
{
IntPtr windowHandle = new WindowInteropHelper( this ).Handle;
var mousePosition = this.PointToScreenDPI( Mouse.GetPosition( this ) );
+ var clientArea = Win32Helper.GetClientRect( windowHandle );
+ var windowArea = Win32Helper.GetWindowRect( windowHandle );
- // BugFix Issue #6
- // This code is initializes the drag when content (document or toolwindow) is dragged
- // A second chance back up plan if DragDelta is not set
- if (DragDelta == default(Point))
- DragDelta = new Point(3, 3);
-
- Left = mousePosition.X - DragDelta.X; // BugFix Issue #6
- Top = mousePosition.Y - DragDelta.Y;
+ Left = mousePosition.X - windowArea.Width / 2.0;
+ Top = mousePosition.Y - ( windowArea.Height - clientArea.Height ) / 2.0;
_attachDrag = false;
IntPtr lParam = new IntPtr( ( ( int )mousePosition.X & ( int )0xFFFF ) | ( ( ( int )mousePosition.Y ) << 16 ) );
@@ -497,6 +519,9 @@ public FloatingWindowContentHost( LayoutFloatingWindowControl owner )
{
_owner = owner;
var manager = _owner.Model.Root.Manager;
+
+ var binding = new Binding( "SizeToContent" ) { Source = _owner };
+ BindingOperations.SetBinding( this, FloatingWindowContentHost.SizeToContentProperty, binding );
}
#endregion
@@ -544,16 +569,72 @@ public UIElement Content
///
private static void OnContentChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
- ( ( FloatingWindowContentHost )d ).OnContentChanged( e );
+ ( ( FloatingWindowContentHost )d ).OnContentChanged( (UIElement)e.OldValue, (UIElement)e.NewValue );
}
///
/// Provides derived classes an opportunity to handle changes to the Content property.
///
- protected virtual void OnContentChanged( DependencyPropertyChangedEventArgs e )
+ protected virtual void OnContentChanged( UIElement oldValue, UIElement newValue )
{
if( _rootPresenter != null )
_rootPresenter.Child = Content;
+
+ var oldContent = oldValue as FrameworkElement;
+ if( oldContent != null )
+ {
+ oldContent.SizeChanged -= this.Content_SizeChanged;
+ }
+
+ var newContent = newValue as FrameworkElement;
+ if( newContent != null )
+ {
+ newContent.SizeChanged += this.Content_SizeChanged;
+ }
+ }
+
+ #endregion
+
+ #region SizeToContent
+
+ ///
+ /// SizeToContent Dependency Property
+ ///
+ public static readonly DependencyProperty SizeToContentProperty = DependencyProperty.Register( "SizeToContent", typeof( SizeToContent ), typeof( FloatingWindowContentHost ),
+ new FrameworkPropertyMetadata( SizeToContent.Manual, new PropertyChangedCallback( OnSizeToContentChanged ) ) );
+
+ ///
+ /// Gets or sets the SizeToContent property.
+ ///
+ public SizeToContent SizeToContent
+ {
+ get
+ {
+ return (SizeToContent)GetValue( SizeToContentProperty );
+ }
+ set
+ {
+ SetValue( SizeToContentProperty, value );
+ }
+ }
+
+ ///
+ /// Handles changes to the SizeToContent property.
+ ///
+ private static void OnSizeToContentChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
+ {
+ ( (FloatingWindowContentHost)d ).OnSizeToContentChanged( (SizeToContent)e.OldValue, (SizeToContent)e.NewValue );
+ }
+
+ ///
+ /// Provides derived classes an opportunity to handle changes to the SizeToContent property.
+ ///
+ protected virtual void OnSizeToContentChanged( SizeToContent oldValue, SizeToContent newValue )
+ {
+ if( _wpfContentHost != null )
+ {
+ _wpfContentHost.SizeToContent = newValue;
+ }
}
#endregion
@@ -575,7 +656,7 @@ protected override System.Runtime.InteropServices.HandleRef BuildWindowCore( Sys
_rootPresenter = new Border() { Child = new AdornerDecorator() { Child = Content }, Focusable = true };
_rootPresenter.SetBinding( Border.BackgroundProperty, new Binding( "Background" ) { Source = _owner } );
_wpfContentHost.RootVisual = _rootPresenter;
- _wpfContentHost.SizeToContent = SizeToContent.Manual;
+
_manager = _owner.Model.Root.Manager;
_manager.InternalAddLogicalChild( _rootPresenter );
@@ -602,6 +683,16 @@ protected override Size MeasureOverride( Size constraint )
}
#endregion
+
+ #region Event Handlers
+
+ private void Content_SizeChanged( object sender, SizeChangedEventArgs e )
+ {
+ this.InvalidateMeasure();
+ this.InvalidateArrange();
+ }
+
+ #endregion
}
#endregion
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs
index ebb000c9..1ffc91ea 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs
@@ -95,13 +95,9 @@ protected override void OnInitialized( EventArgs e )
_model.ChildrenTreeChanged += ( s, args ) =>
{
- if (args.Change != ChildrenTreeChange.DirectChildrenChanged)
- return;
-
- if ( _asyncRefreshCalled.HasValue &&
- _asyncRefreshCalled.Value == args.Change )
+ if( _asyncRefreshCalled.HasValue &&
+ _asyncRefreshCalled.Value == args.Change )
return;
-
_asyncRefreshCalled = args.Change;
Dispatcher.BeginInvoke( new Action( () =>
{
@@ -419,9 +415,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri
}
else
{
- var width = ( prevChildModel.DockWidth.IsAuto ) ? prevChildActualSize.Width : prevChildModel.DockWidth.Value;
- var resizedWidth = width + delta;
- prevChildModel.DockWidth = new GridLength(double.IsNaN(resizedWidth) ? width : resizedWidth, GridUnitType.Pixel );
+ prevChildModel.DockWidth = new GridLength( prevChildModel.DockWidth.Value + delta, GridUnitType.Pixel );
}
if( nextChildModel.DockWidth.IsStar )
@@ -430,9 +424,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri
}
else
{
- var width = ( nextChildModel.DockWidth.IsAuto ) ? nextChildActualSize.Width : nextChildModel.DockWidth.Value;
- var resizedWidth = width - delta;
- nextChildModel.DockWidth = new GridLength(double.IsNaN(resizedWidth) ? width : resizedWidth, GridUnitType.Pixel);
+ nextChildModel.DockWidth = new GridLength( nextChildModel.DockWidth.Value - delta, GridUnitType.Pixel );
}
}
else
@@ -443,9 +435,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri
}
else
{
- var height = ( prevChildModel.DockHeight.IsAuto ) ? prevChildActualSize.Height : prevChildModel.DockHeight.Value;
- var resizedHeight = height + delta;
- prevChildModel.DockHeight = new GridLength(double.IsNaN(resizedHeight) ? height : resizedHeight, GridUnitType.Pixel );
+ prevChildModel.DockHeight = new GridLength( prevChildModel.DockHeight.Value + delta, GridUnitType.Pixel );
}
if( nextChildModel.DockHeight.IsStar )
@@ -454,9 +444,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri
}
else
{
- var height = ( nextChildModel.DockHeight.IsAuto ) ? nextChildActualSize.Height : nextChildModel.DockHeight.Value;
- var resizedHeight = height - delta;
- nextChildModel.DockHeight = new GridLength(double.IsNaN(resizedHeight) ? height : resizedHeight, GridUnitType.Pixel );
+ nextChildModel.DockHeight = new GridLength( nextChildModel.DockHeight.Value - delta, GridUnitType.Pixel );
}
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs
index 7ca82af1..8e83d835 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/LayoutItem.cs
@@ -89,18 +89,14 @@ public ContentPresenter View
{
get
{
- if (_view == null)
+ if( _view == null )
{
- _view = new ContentPresenter();
+ _view = new ContentPresenter();
- _view.SetBinding(ContentPresenter.ContentProperty, new Binding("Content") { Source = LayoutElement });
-
- if ((LayoutElement != null) && (LayoutElement.Root != null))
- {
- _view.SetBinding(ContentPresenter.ContentTemplateProperty, new Binding("LayoutItemTemplate") { Source = LayoutElement?.Root?.Manager });
- _view.SetBinding(ContentPresenter.ContentTemplateSelectorProperty, new Binding("LayoutItemTemplateSelector") { Source = LayoutElement?.Root?.Manager });
- LayoutElement?.Root?.Manager.InternalAddLogicalChild(_view);
- }
+ _view.SetBinding( ContentPresenter.ContentProperty, new Binding( "Content" ) { Source = LayoutElement } );
+ _view.SetBinding( ContentPresenter.ContentTemplateProperty, new Binding( "LayoutItemTemplate" ) { Source = LayoutElement.Root.Manager } );
+ _view.SetBinding( ContentPresenter.ContentTemplateSelectorProperty, new Binding( "LayoutItemTemplateSelector" ) { Source = LayoutElement.Root.Manager } );
+ LayoutElement.Root.Manager.InternalAddLogicalChild( _view );
}
return _view;
@@ -603,9 +599,14 @@ private static object CoerceDockAsDocumentCommandValue( DependencyObject d, obje
return value;
}
+ protected virtual bool CanExecuteDockAsDocumentCommand()
+ {
+ return ( LayoutElement != null && LayoutElement.FindParent() == null );
+ }
+
private bool CanExecuteDockAsDocumentCommand( object parameter )
{
- return LayoutElement != null && LayoutElement.FindParent() == null;
+ return this.CanExecuteDockAsDocumentCommand();
}
private void ExecuteDockAsDocumentCommand( object parameter )
@@ -849,6 +850,9 @@ private bool CanExecuteNewVerticalTabGroupCommand( object parameter )
{
if( LayoutElement == null )
return false;
+ var layoutDocument = LayoutElement as LayoutDocument;
+ if( ( layoutDocument != null ) && !layoutDocument.CanMove )
+ return false;
var parentDocumentGroup = LayoutElement.FindParent();
var parentDocumentPane = LayoutElement.Parent as LayoutDocumentPane;
return ( ( parentDocumentGroup == null ||
@@ -924,6 +928,9 @@ private bool CanExecuteNewHorizontalTabGroupCommand( object parameter )
{
if( LayoutElement == null )
return false;
+ var layoutDocument = LayoutElement as LayoutDocument;
+ if( ( layoutDocument != null ) && !layoutDocument.CanMove )
+ return false;
var parentDocumentGroup = LayoutElement.FindParent();
var parentDocumentPane = LayoutElement.Parent as LayoutDocumentPane;
return ( ( parentDocumentGroup == null ||
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs b/source/Components/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs
index e76d5882..ccc2717b 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Controls/OverlayWindow.cs
@@ -493,12 +493,20 @@ void IOverlayWindow.DragLeave( LayoutFloatingWindowControl floatingWindow )
void IOverlayWindow.DragEnter( IDropArea area )
{
+ var floatingWindowManager = _floatingWindow.Model.Root.Manager;
+
_visibleAreas.Add( area );
FrameworkElement areaElement;
switch( area.Type )
{
case DropAreaType.DockingManager:
+ var dropAreaDockingManager = area as DropArea;
+ if( dropAreaDockingManager.AreaElement != floatingWindowManager )
+ {
+ _visibleAreas.Remove( area );
+ return;
+ }
areaElement = _gridDockingManagerDropTargets;
break;
case DropAreaType.AnchorablePane:
@@ -506,6 +514,11 @@ void IOverlayWindow.DragEnter( IDropArea area )
var dropAreaAnchorablePaneGroup = area as DropArea;
var layoutAnchorablePane = dropAreaAnchorablePaneGroup.AreaElement.Model as LayoutAnchorablePane;
+ if( layoutAnchorablePane.Root.Manager != floatingWindowManager )
+ {
+ _visibleAreas.Remove( area );
+ return;
+ }
SetDropTargetIntoVisibility( layoutAnchorablePane );
break;
case DropAreaType.DocumentPaneGroup:
@@ -514,7 +527,11 @@ void IOverlayWindow.DragEnter( IDropArea area )
var dropAreaDocumentPaneGroup = area as DropArea;
var layoutDocumentPane = ( dropAreaDocumentPaneGroup.AreaElement.Model as LayoutDocumentPaneGroup ).Children.First() as LayoutDocumentPane;
var parentDocumentPaneGroup = layoutDocumentPane.Parent as LayoutDocumentPaneGroup;
-
+ if( parentDocumentPaneGroup.Root.Manager != floatingWindowManager )
+ {
+ _visibleAreas.Remove( area );
+ return;
+ }
_documentPaneDropTargetLeft.Visibility = Visibility.Hidden;
_documentPaneDropTargetRight.Visibility = Visibility.Hidden;
_documentPaneDropTargetTop.Visibility = Visibility.Hidden;
@@ -531,6 +548,11 @@ void IOverlayWindow.DragEnter( IDropArea area )
var dropAreaDocumentPaneGroup = area as DropArea;
var layoutDocumentPane = dropAreaDocumentPaneGroup.AreaElement.Model as LayoutDocumentPane;
var parentDocumentPaneGroup = layoutDocumentPane.Parent as LayoutDocumentPaneGroup;
+ if( layoutDocumentPane.Root.Manager != floatingWindowManager )
+ {
+ _visibleAreas.Remove( area );
+ return;
+ }
SetDropTargetIntoVisibility( layoutDocumentPane );
@@ -622,6 +644,11 @@ void IOverlayWindow.DragEnter( IDropArea area )
var dropAreaDocumentPaneGroup = area as DropArea;
var layoutDocumentPane = dropAreaDocumentPaneGroup.AreaElement.Model as LayoutDocumentPane;
var parentDocumentPaneGroup = layoutDocumentPane.Parent as LayoutDocumentPaneGroup;
+ if( layoutDocumentPane.Root.Manager != floatingWindowManager )
+ {
+ _visibleAreas.Remove( area );
+ return;
+ }
SetDropTargetIntoVisibility( layoutDocumentPane );
diff --git a/source/Components/Xceed.Wpf.AvalonDock/DockingManager.cs b/source/Components/Xceed.Wpf.AvalonDock/DockingManager.cs
index a63063c4..2fb46036 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/DockingManager.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/DockingManager.cs
@@ -1983,6 +1983,34 @@ public LayoutItem GetLayoutItemFromModel( LayoutContent content )
return _layoutItems.FirstOrDefault( item => item.LayoutElement == content );
}
+ public LayoutFloatingWindowControl CreateFloatingWindow( LayoutContent contentModel, bool isContentImmutable )
+ {
+ LayoutFloatingWindowControl lfwc = null;
+
+ if( contentModel is LayoutAnchorable )
+ {
+ var parent = contentModel.Parent as ILayoutPane;
+ if( parent == null )
+ {
+ var pane = new LayoutAnchorablePane( contentModel as LayoutAnchorable )
+ {
+ FloatingTop = contentModel.FloatingTop,
+ FloatingLeft = contentModel.FloatingLeft,
+ FloatingWidth = contentModel.FloatingWidth,
+ FloatingHeight = contentModel.FloatingHeight
+ };
+ lfwc = this.CreateFloatingWindowForLayoutAnchorableWithoutParent( pane, isContentImmutable );
+ }
+ }
+
+ if( lfwc == null )
+ {
+ lfwc = this.CreateFloatingWindowCore( contentModel, isContentImmutable );
+ }
+
+ return lfwc;
+ }
+
#endregion
#region Internal Methods
@@ -2046,7 +2074,12 @@ internal UIElement CreateUIElementForModel( ILayoutElement model )
}
newFW.ShowInTaskbar = false;
- newFW.Show();
+
+ Dispatcher.BeginInvoke( new Action( () =>
+ {
+ newFW.Show();
+ } ), DispatcherPriority.Send );
+
// Do not set the WindowState before showing or it will be lost
if( paneForExtensions != null && paneForExtensions.IsMaximized )
{
@@ -2126,208 +2159,28 @@ internal FrameworkElement GetAutoHideAreaElement()
return _autohideArea;
}
- internal void StartDraggingFloatingWindowForContent( LayoutContent contentModel,
- bool startDrag = true ,
- Point dragDelta = default(Point))
+ internal void StartDraggingFloatingWindowForContent( LayoutContent contentModel, bool startDrag = true )
{
- if( !contentModel.CanFloat )
- return;
- var contentModelAsAnchorable = contentModel as LayoutAnchorable;
- if( contentModelAsAnchorable != null &&
- contentModelAsAnchorable.IsAutoHidden )
- contentModelAsAnchorable.ToggleAutoHide();
-
- var parentPane = contentModel.Parent as ILayoutPane;
- var parentPaneAsPositionableElement = contentModel.Parent as ILayoutPositionableElement;
- var parentPaneAsWithActualSize = contentModel.Parent as ILayoutPositionableElementWithActualSize;
- var contentModelParentChildrenIndex = parentPane.Children.ToList().IndexOf( contentModel );
-
- if( contentModel.FindParent() == null )
+ var fwc = this.CreateFloatingWindow( contentModel, false );
+ if( fwc != null )
{
- ( ( ILayoutPreviousContainer )contentModel ).PreviousContainer = parentPane;
- contentModel.PreviousContainerIndex = contentModelParentChildrenIndex;
- }
-
- parentPane.RemoveChildAt( contentModelParentChildrenIndex );
-
- double fwWidth = contentModel.FloatingWidth;
- double fwHeight = contentModel.FloatingHeight;
-
- if( fwWidth == 0.0 )
- fwWidth = parentPaneAsPositionableElement.FloatingWidth;
- if( fwHeight == 0.0 )
- fwHeight = parentPaneAsPositionableElement.FloatingHeight;
-
- if( fwWidth == 0.0 )
- fwWidth = parentPaneAsWithActualSize.ActualWidth + 10; //10 includes BorderThickness and Margins inside LayoutDocumentFloatingWindowControl.
- if( fwHeight == 0.0 )
- fwHeight = parentPaneAsWithActualSize.ActualHeight + 10; //10 includes BorderThickness and Margins inside LayoutDocumentFloatingWindowControl.
-
- LayoutFloatingWindow fw;
- LayoutFloatingWindowControl fwc;
- if( contentModel is LayoutAnchorable )
- {
- var anchorableContent = contentModel as LayoutAnchorable;
- fw = new LayoutAnchorableFloatingWindow()
+ Dispatcher.BeginInvoke( new Action( () =>
{
- RootPanel = new LayoutAnchorablePaneGroup(
- new LayoutAnchorablePane( anchorableContent )
- {
- DockWidth = parentPaneAsPositionableElement.DockWidth,
- DockHeight = parentPaneAsPositionableElement.DockHeight,
- DockMinHeight = parentPaneAsPositionableElement.DockMinHeight,
- DockMinWidth = parentPaneAsPositionableElement.DockMinWidth,
- FloatingLeft = parentPaneAsPositionableElement.FloatingLeft,
- FloatingTop = parentPaneAsPositionableElement.FloatingTop,
- FloatingWidth = parentPaneAsPositionableElement.FloatingWidth,
- FloatingHeight = parentPaneAsPositionableElement.FloatingHeight,
- } )
- };
-
- Layout.FloatingWindows.Add( fw );
-
- fwc = new LayoutAnchorableFloatingWindowControl(
- fw as LayoutAnchorableFloatingWindow )
- {
- Width = fwWidth,
- Height = fwHeight,
- Left = contentModel.FloatingLeft,
- Top = contentModel.FloatingTop,
- DragDelta = dragDelta // Setup initial tool window drag delta
- };
+ if( startDrag )
+ fwc.AttachDrag();
+ fwc.Show();
+ } ), DispatcherPriority.Send );
}
- else
- {
- var anchorableDocument = contentModel as LayoutDocument;
- fw = new LayoutDocumentFloatingWindow()
- {
- RootDocument = anchorableDocument
- };
-
- Layout.FloatingWindows.Add( fw );
-
- fwc = new LayoutDocumentFloatingWindowControl(
- fw as LayoutDocumentFloatingWindow )
- {
- Width = fwWidth,
- Height = fwHeight,
- Left = contentModel.FloatingLeft,
- Top = contentModel.FloatingTop,
- DragDelta = dragDelta // Setup initial document window drag delta
- };
- }
-
-
- //fwc.Owner = Window.GetWindow(this);
- //fwc.SetParentToMainWindowOf(this);
-
-
- _fwList.Add( fwc );
-
- Layout.CollectGarbage();
-
- UpdateLayout();
-
- Dispatcher.BeginInvoke( new Action( () =>
- {
- if( startDrag )
- fwc.AttachDrag();
- fwc.Show();
- } ), DispatcherPriority.Send );
}
- internal void StartDraggingFloatingWindowForPane( LayoutAnchorablePane paneModel,
- Point dragDelta)
+ internal void StartDraggingFloatingWindowForPane( LayoutAnchorablePane paneModel )
{
- if( paneModel.Children.Any( c => !c.CanFloat ) )
- return;
- var paneAsPositionableElement = paneModel as ILayoutPositionableElement;
- var paneAsWithActualSize = paneModel as ILayoutPositionableElementWithActualSize;
-
- double fwWidth = paneAsPositionableElement.FloatingWidth;
- double fwHeight = paneAsPositionableElement.FloatingHeight;
- double fwLeft = paneAsPositionableElement.FloatingLeft;
- double fwTop = paneAsPositionableElement.FloatingTop;
-
- if( fwWidth == 0.0 )
- fwWidth = paneAsWithActualSize.ActualWidth + 10; //10 includes BorderThickness and Margins inside LayoutAnchorableFloatingWindowControl.
- if( fwHeight == 0.0 )
- fwHeight = paneAsWithActualSize.ActualHeight + 10; //10 includes BorderThickness and Margins inside LayoutAnchorableFloatingWindowControl.
-
- var destPane = new LayoutAnchorablePane()
- {
- DockWidth = paneAsPositionableElement.DockWidth,
- DockHeight = paneAsPositionableElement.DockHeight,
- DockMinHeight = paneAsPositionableElement.DockMinHeight,
- DockMinWidth = paneAsPositionableElement.DockMinWidth,
- FloatingLeft = paneAsPositionableElement.FloatingLeft,
- FloatingTop = paneAsPositionableElement.FloatingTop,
- FloatingWidth = paneAsPositionableElement.FloatingWidth,
- FloatingHeight = paneAsPositionableElement.FloatingHeight,
- };
-
- bool savePreviousContainer = paneModel.FindParent() == null;
- int currentSelectedContentIndex = paneModel.SelectedContentIndex;
- while( paneModel.Children.Count > 0 )
- {
- var contentModel = paneModel.Children[ paneModel.Children.Count - 1 ] as LayoutAnchorable;
-
- if( savePreviousContainer )
- {
- var contentModelAsPreviousContainer = contentModel as ILayoutPreviousContainer;
- contentModelAsPreviousContainer.PreviousContainer = paneModel;
- contentModel.PreviousContainerIndex = paneModel.Children.Count - 1;
- }
-
- paneModel.RemoveChildAt( paneModel.Children.Count - 1 );
- destPane.Children.Insert( 0, contentModel );
- }
-
- if( destPane.Children.Count > 0 )
+ var fwc = this.CreateFloatingWindowForLayoutAnchorableWithoutParent( paneModel, false );
+ if( fwc != null )
{
- destPane.SelectedContentIndex = currentSelectedContentIndex;
+ fwc.AttachDrag();
+ fwc.Show();
}
-
-
- LayoutFloatingWindow fw;
- LayoutFloatingWindowControl fwc;
- fw = new LayoutAnchorableFloatingWindow()
- {
- RootPanel = new LayoutAnchorablePaneGroup(
- destPane )
- {
- DockHeight = destPane.DockHeight,
- DockWidth = destPane.DockWidth,
- DockMinHeight = destPane.DockMinHeight,
- DockMinWidth = destPane.DockMinWidth,
- }
- };
-
- Layout.FloatingWindows.Add( fw );
-
- fwc = new LayoutAnchorableFloatingWindowControl(
- fw as LayoutAnchorableFloatingWindow )
- {
- Width = fwWidth,
- Height = fwHeight,
- DragDelta = dragDelta
- };
-
-
-
- //fwc.Owner = Window.GetWindow(this);
- //fwc.SetParentToMainWindowOf(this);
-
-
- _fwList.Add( fwc );
-
- Layout.CollectGarbage();
-
- InvalidateArrange();
-
- fwc.AttachDrag();
- fwc.Show();
-
}
internal IEnumerable GetFloatingWindowsByZOrder()
@@ -2520,7 +2373,6 @@ private void DockingManager_Loaded( object sender, RoutedEventArgs e )
private void DockingManager_Unloaded( object sender, RoutedEventArgs e )
{
-
if( !DesignerProperties.GetIsInDesignMode( this ) )
{
if( _autoHideWindowManager != null )
@@ -2529,7 +2381,9 @@ private void DockingManager_Unloaded( object sender, RoutedEventArgs e )
}
if( AutoHideWindow != null )
+ {
AutoHideWindow.Dispose();
+ }
foreach( var fw in _fwList.ToArray() )
{
@@ -2538,6 +2392,7 @@ private void DockingManager_Unloaded( object sender, RoutedEventArgs e )
fw.KeepContentVisibleOnClose = true;
fw.Close();
}
+ _fwList.Clear();
DestroyOverlayWindow();
FocusElementManager.FinalizeFocusManagement( this );
@@ -2552,7 +2407,9 @@ private void SetupAutoHideWindow()
_autoHideWindowManager = new AutoHideWindowManager( this );
if( AutoHideWindow != null )
+ {
AutoHideWindow.Dispose();
+ }
SetAutoHideWindow( new LayoutAutoHideWindowControl() );
}
@@ -3165,8 +3022,8 @@ private void CreateAnchorableLayoutItem( LayoutAnchorable contentToAttach )
var layoutItem = new LayoutAnchorableItem();
layoutItem.Attach( contentToAttach );
- _layoutItems.Add( layoutItem ); // #1430
- ApplyStyleToLayoutItem( layoutItem ); // #1430
+ ApplyStyleToLayoutItem( layoutItem );
+ _layoutItems.Add( layoutItem );
if( contentToAttach != null &&
contentToAttach.Content != null &&
@@ -3190,8 +3047,8 @@ private void CreateDocumentLayoutItem( LayoutDocument contentToAttach )
var layoutItem = new LayoutDocumentItem();
layoutItem.Attach( contentToAttach );
- _layoutItems.Add( layoutItem ); // #1430
- ApplyStyleToLayoutItem( layoutItem ); // #1430
+ ApplyStyleToLayoutItem( layoutItem );
+ _layoutItems.Add( layoutItem );
if( contentToAttach != null &&
contentToAttach.Content != null &&
@@ -3217,6 +3074,199 @@ private void ShowNavigatorWindow()
_navigatorWindow = null;
}
+ private LayoutFloatingWindowControl CreateFloatingWindowForLayoutAnchorableWithoutParent( LayoutAnchorablePane paneModel, bool isContentImmutable )
+ {
+ if( paneModel.Children.Any( c => !c.CanFloat ) )
+ return null;
+ var paneAsPositionableElement = paneModel as ILayoutPositionableElement;
+ var paneAsWithActualSize = paneModel as ILayoutPositionableElementWithActualSize;
+
+ double fwWidth = paneAsPositionableElement.FloatingWidth;
+ double fwHeight = paneAsPositionableElement.FloatingHeight;
+ double fwLeft = paneAsPositionableElement.FloatingLeft;
+ double fwTop = paneAsPositionableElement.FloatingTop;
+
+ if( fwWidth == 0.0 )
+ fwWidth = paneAsWithActualSize.ActualWidth + 10; //10 includes BorderThickness and Margins inside LayoutAnchorableFloatingWindowControl.
+ if( fwHeight == 0.0 )
+ fwHeight = paneAsWithActualSize.ActualHeight + 10; //10 includes BorderThickness and Margins inside LayoutAnchorableFloatingWindowControl.
+
+ var destPane = new LayoutAnchorablePane()
+ {
+ DockWidth = paneAsPositionableElement.DockWidth,
+ DockHeight = paneAsPositionableElement.DockHeight,
+ DockMinHeight = paneAsPositionableElement.DockMinHeight,
+ DockMinWidth = paneAsPositionableElement.DockMinWidth,
+ FloatingLeft = paneAsPositionableElement.FloatingLeft,
+ FloatingTop = paneAsPositionableElement.FloatingTop,
+ FloatingWidth = paneAsPositionableElement.FloatingWidth,
+ FloatingHeight = paneAsPositionableElement.FloatingHeight,
+ };
+
+ bool savePreviousContainer = paneModel.FindParent() == null;
+ int currentSelectedContentIndex = paneModel.SelectedContentIndex;
+ while( paneModel.Children.Count > 0 )
+ {
+ var contentModel = paneModel.Children[ paneModel.Children.Count - 1 ] as LayoutAnchorable;
+
+ if( savePreviousContainer )
+ {
+ var contentModelAsPreviousContainer = contentModel as ILayoutPreviousContainer;
+ contentModelAsPreviousContainer.PreviousContainer = paneModel;
+ contentModel.PreviousContainerIndex = paneModel.Children.Count - 1;
+ }
+
+ paneModel.RemoveChildAt( paneModel.Children.Count - 1 );
+ destPane.Children.Insert( 0, contentModel );
+ }
+
+ if( destPane.Children.Count > 0 )
+ {
+ destPane.SelectedContentIndex = currentSelectedContentIndex;
+ }
+
+
+ LayoutFloatingWindow fw;
+ LayoutFloatingWindowControl fwc;
+ fw = new LayoutAnchorableFloatingWindow()
+ {
+ RootPanel = new LayoutAnchorablePaneGroup(
+ destPane )
+ {
+ DockHeight = destPane.DockHeight,
+ DockWidth = destPane.DockWidth,
+ DockMinHeight = destPane.DockMinHeight,
+ DockMinWidth = destPane.DockMinWidth,
+ }
+ };
+
+ Layout.FloatingWindows.Add( fw );
+
+ fwc = new LayoutAnchorableFloatingWindowControl(
+ fw as LayoutAnchorableFloatingWindow, isContentImmutable )
+ {
+ Width = fwWidth,
+ Height = fwHeight,
+ Top = fwTop,
+ Left = fwLeft
+ };
+
+
+
+ //fwc.Owner = Window.GetWindow(this);
+ //fwc.SetParentToMainWindowOf(this);
+
+
+ _fwList.Add( fwc );
+
+ Layout.CollectGarbage();
+
+ InvalidateArrange();
+
+ return fwc;
+ }
+
+ private LayoutFloatingWindowControl CreateFloatingWindowCore( LayoutContent contentModel, bool isContentImmutable )
+ {
+ if( !contentModel.CanFloat )
+ return null;
+ var contentModelAsAnchorable = contentModel as LayoutAnchorable;
+ if( contentModelAsAnchorable != null &&
+ contentModelAsAnchorable.IsAutoHidden )
+ contentModelAsAnchorable.ToggleAutoHide();
+
+ var parentPane = contentModel.Parent as ILayoutPane;
+ var parentPaneAsPositionableElement = contentModel.Parent as ILayoutPositionableElement;
+ var parentPaneAsWithActualSize = contentModel.Parent as ILayoutPositionableElementWithActualSize;
+ var contentModelParentChildrenIndex = parentPane.Children.ToList().IndexOf( contentModel );
+
+ if( contentModel.FindParent() == null )
+ {
+ ( (ILayoutPreviousContainer)contentModel ).PreviousContainer = parentPane;
+ contentModel.PreviousContainerIndex = contentModelParentChildrenIndex;
+ }
+
+ parentPane.RemoveChildAt( contentModelParentChildrenIndex );
+
+ double fwWidth = contentModel.FloatingWidth;
+ double fwHeight = contentModel.FloatingHeight;
+
+ if( fwWidth == 0.0 )
+ fwWidth = parentPaneAsPositionableElement.FloatingWidth;
+ if( fwHeight == 0.0 )
+ fwHeight = parentPaneAsPositionableElement.FloatingHeight;
+
+ if( fwWidth == 0.0 )
+ fwWidth = parentPaneAsWithActualSize.ActualWidth + 10; //10 includes BorderThickness and Margins inside LayoutDocumentFloatingWindowControl.
+ if( fwHeight == 0.0 )
+ fwHeight = parentPaneAsWithActualSize.ActualHeight + 10; //10 includes BorderThickness and Margins inside LayoutDocumentFloatingWindowControl.
+
+ LayoutFloatingWindow fw;
+ LayoutFloatingWindowControl fwc;
+ if( contentModel is LayoutAnchorable )
+ {
+ var anchorableContent = contentModel as LayoutAnchorable;
+ fw = new LayoutAnchorableFloatingWindow()
+ {
+ RootPanel = new LayoutAnchorablePaneGroup(
+ new LayoutAnchorablePane( anchorableContent )
+ {
+ DockWidth = parentPaneAsPositionableElement.DockWidth,
+ DockHeight = parentPaneAsPositionableElement.DockHeight,
+ DockMinHeight = parentPaneAsPositionableElement.DockMinHeight,
+ DockMinWidth = parentPaneAsPositionableElement.DockMinWidth,
+ FloatingLeft = parentPaneAsPositionableElement.FloatingLeft,
+ FloatingTop = parentPaneAsPositionableElement.FloatingTop,
+ FloatingWidth = parentPaneAsPositionableElement.FloatingWidth,
+ FloatingHeight = parentPaneAsPositionableElement.FloatingHeight,
+ } )
+ };
+
+ Layout.FloatingWindows.Add( fw );
+
+ fwc = new LayoutAnchorableFloatingWindowControl(
+ fw as LayoutAnchorableFloatingWindow, isContentImmutable )
+ {
+ Width = fwWidth,
+ Height = fwHeight,
+ Left = contentModel.FloatingLeft,
+ Top = contentModel.FloatingTop
+ };
+ }
+ else
+ {
+ var anchorableDocument = contentModel as LayoutDocument;
+ fw = new LayoutDocumentFloatingWindow()
+ {
+ RootDocument = anchorableDocument
+ };
+
+ Layout.FloatingWindows.Add( fw );
+
+ fwc = new LayoutDocumentFloatingWindowControl(
+ fw as LayoutDocumentFloatingWindow, isContentImmutable )
+ {
+ Width = fwWidth,
+ Height = fwHeight,
+ Left = contentModel.FloatingLeft,
+ Top = contentModel.FloatingTop
+ };
+ }
+
+
+ //fwc.Owner = Window.GetWindow(this);
+ //fwc.SetParentToMainWindowOf(this);
+
+
+ _fwList.Add( fwc );
+
+ Layout.CollectGarbage();
+
+ UpdateLayout();
+
+ return fwc;
+ }
+
#endregion
#region Events
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/Extentions.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/Extentions.cs
index 09c3469a..dcb2f3af 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/Extentions.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/Extentions.cs
@@ -85,41 +85,34 @@ public static bool IsOfType( this ILayoutContainer container )
return container is T || container is S;
}
- public static AnchorSide GetSide(this ILayoutElement element)
+ public static AnchorSide GetSide( this ILayoutElement element )
+ {
+ var parentContainer = element.Parent as ILayoutOrientableGroup;
+ if( parentContainer != null )
+ {
+ var layoutPanel = parentContainer as LayoutPanel;
+ if( layoutPanel == null )
{
- var parentContainer = element.Parent as ILayoutOrientableGroup;
- if (parentContainer != null)
- {
- if (!parentContainer.ContainsChildOfType())
- return GetSide(parentContainer);
-
- foreach (var childElement in parentContainer.Children)
- {
- if (childElement == element ||
- childElement.Descendents().Contains(element))
- return parentContainer.Orientation == System.Windows.Controls.Orientation.Horizontal ?
- AnchorSide.Left : AnchorSide.Top;
-
- var childElementAsContainer = childElement as ILayoutContainer;
- if (childElementAsContainer != null &&
- (childElementAsContainer.IsOfType() ||
- childElementAsContainer.ContainsChildOfType()))
- {
- return parentContainer.Orientation == System.Windows.Controls.Orientation.Horizontal ?
- AnchorSide.Right : AnchorSide.Bottom;
- }
- }
- }
-
- Debug.Fail("Unable to find the side for an element, possible layout problem!");
- return AnchorSide.Right;
+ layoutPanel = parentContainer.FindParent();
}
- #endregion
+ if( (layoutPanel != null) && ( layoutPanel.Children.Count > 0 ) )
+ {
+ if( layoutPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
+ return ( layoutPanel.Children[ 0 ].Equals(element) || layoutPanel.Children[ 0 ].Descendents().Contains( element ) ) ? AnchorSide.Left : AnchorSide.Right;
+ return ( layoutPanel.Children[ 0 ].Equals( element ) || layoutPanel.Children[ 0 ].Descendents().Contains( element ) ) ? AnchorSide.Top : AnchorSide.Bottom;
+ }
+ }
+
+ Debug.Fail( "Unable to find the side for an element, possible layout problem!" );
+ return AnchorSide.Right;
+ }
+
+ #endregion
- #region Internal Methods
+ #region Internal Methods
- internal static void KeepInsideNearestMonitor( this ILayoutElementForFloatingWindow paneInsideFloatingWindow )
+ internal static void KeepInsideNearestMonitor( this ILayoutElementForFloatingWindow paneInsideFloatingWindow )
{
Win32Helper.RECT r = new Win32Helper.RECT();
r.Left = ( int )paneInsideFloatingWindow.FloatingLeft;
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs
index 66362faa..ebfddce8 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs
@@ -35,6 +35,7 @@ public class LayoutAnchorable : LayoutContent
private double _autohideMinHeight = 100.0;
private bool _canHide = true;
private bool _canAutoHide = true;
+ private bool _canDockAsTabbedDocument = true;
private bool _canCloseValueBeforeInternalSet;
#endregion
@@ -181,6 +182,26 @@ public bool CanAutoHide
#endregion
+ #region CanDockAsTabbedDocument
+
+ public bool CanDockAsTabbedDocument
+ {
+ get
+ {
+ return _canDockAsTabbedDocument;
+ }
+ set
+ {
+ if( _canDockAsTabbedDocument != value )
+ {
+ _canDockAsTabbedDocument = value;
+ RaisePropertyChanged( "CanDockAsTabbedDocument" );
+ }
+ }
+ }
+
+ #endregion
+
#region IsAutoHidden
///
@@ -326,6 +347,8 @@ public override void ReadXml( System.Xml.XmlReader reader )
AutoHideMinWidth = double.Parse( reader.Value, CultureInfo.InvariantCulture );
if( reader.MoveToAttribute( "AutoHideMinHeight" ) )
AutoHideMinHeight = double.Parse( reader.Value, CultureInfo.InvariantCulture );
+ if( reader.MoveToAttribute( "CanDockAsTabbedDocument" ) )
+ CanDockAsTabbedDocument = bool.Parse( reader.Value );
base.ReadXml( reader );
}
@@ -344,7 +367,8 @@ public override void WriteXml( System.Xml.XmlWriter writer )
writer.WriteAttributeString( "AutoHideMinWidth", AutoHideMinWidth.ToString( CultureInfo.InvariantCulture ) );
if( AutoHideMinHeight != 25.0 )
writer.WriteAttributeString( "AutoHideMinHeight", AutoHideMinHeight.ToString( CultureInfo.InvariantCulture ) );
-
+ if( !CanDockAsTabbedDocument )
+ writer.WriteAttributeString( "CanDockAsTabbedDocument", CanDockAsTabbedDocument.ToString( CultureInfo.InvariantCulture ) );
base.WriteXml( writer );
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs
index e9c7c19e..0cf07850 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs
@@ -22,7 +22,6 @@ This program is provided to you under the terms of the Microsoft Public
using System.Globalization;
using System.Windows.Media;
using System.ComponentModel;
-using Xceed.Wpf.AvalonDock.Controls;
namespace Xceed.Wpf.AvalonDock.Layout
{
@@ -144,7 +143,6 @@ public bool IsSelected
parentSelector.SelectedContentIndex = _isSelected ? parentSelector.IndexOf( this ) : -1;
OnIsSelectedChanged( oldValue, value );
RaisePropertyChanged( "IsSelected" );
- LayoutAnchorableTabItem.CancelMouseLeave();
}
}
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutDocument.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutDocument.cs
index 3f32dfd1..1fff5565 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutDocument.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutDocument.cs
@@ -25,6 +25,27 @@ public class LayoutDocument : LayoutContent
{
#region Properties
+ #region CanMove
+
+ internal bool _canMove = true;
+ public bool CanMove
+ {
+ get
+ {
+ return _canMove;
+ }
+ set
+ {
+ if( _canMove != value )
+ {
+ _canMove = value;
+ RaisePropertyChanged( "CanMove" );
+ }
+ }
+ }
+
+ #endregion
+
#region IsVisible
public bool IsVisible
@@ -74,12 +95,16 @@ public override void WriteXml( System.Xml.XmlWriter writer )
if( !string.IsNullOrWhiteSpace( this.Description ) )
writer.WriteAttributeString( "Description", this.Description );
+ if( !CanMove )
+ writer.WriteAttributeString( "CanMove", CanMove.ToString() );
}
public override void ReadXml( System.Xml.XmlReader reader )
{
if( reader.MoveToAttribute( "Description" ) )
this.Description = reader.Value;
+ if( reader.MoveToAttribute( "CanMove" ) )
+ CanMove = bool.Parse( reader.Value );
base.ReadXml( reader );
}
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs
index 149598b7..373ab50e 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs
@@ -340,7 +340,7 @@ public override void WriteXml( System.Xml.XmlWriter writer )
writer.WriteAttributeString( "DockHeight", _gridLengthConverter.ConvertToInvariantString( DockHeight ) );
if( DockMinWidth != 25.0 )
- writer.WriteAttributeString( "DockMinWidth", DockMinWidth.ToString( CultureInfo.InvariantCulture ) );
+ writer.WriteAttributeString( "DocMinWidth", DockMinWidth.ToString( CultureInfo.InvariantCulture ) );
if( DockMinHeight != 25.0 )
writer.WriteAttributeString( "DockMinHeight", DockMinHeight.ToString( CultureInfo.InvariantCulture ) );
@@ -366,9 +366,9 @@ public override void ReadXml( System.Xml.XmlReader reader )
if( reader.MoveToAttribute( "DockHeight" ) )
_dockHeight = ( GridLength )_gridLengthConverter.ConvertFromInvariantString( reader.Value );
- if( reader.MoveToAttribute( "DockMinWidth" ) )
+ if( reader.MoveToAttribute( "DocMinWidth" ) )
_dockMinWidth = double.Parse( reader.Value, CultureInfo.InvariantCulture );
- if( reader.MoveToAttribute( "DockMinHeight" ) )
+ if( reader.MoveToAttribute( "DocMinHeight" ) )
_dockMinHeight = double.Parse( reader.Value, CultureInfo.InvariantCulture );
if( reader.MoveToAttribute( "FloatingWidth" ) )
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs
index 98fc4d99..78b39e25 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs
@@ -777,18 +777,13 @@ internal void OnLayoutElementRemoved( LayoutElement element )
private void _floatingWindows_CollectionChanged( object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e )
{
- bool bNotifyChildren = false;
-
if( e.OldItems != null && ( e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove ||
e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace ) )
{
foreach( LayoutFloatingWindow element in e.OldItems )
{
if( element.Parent == this )
- {
element.Parent = null;
- bNotifyChildren = true;
- }
}
}
@@ -796,37 +791,12 @@ private void _floatingWindows_CollectionChanged( object sender, System.Collectio
e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace ) )
{
foreach( LayoutFloatingWindow element in e.NewItems )
- {
element.Parent = this;
- bNotifyChildren = true;
- }
- }
-
- // descendants of LayoutElement notify when their Children and ChildrenCount properties change
- // https://github.com/xceedsoftware/wpftoolkit/issues/1313
- //
- if (bNotifyChildren == true &&
- (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove ||
- e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add
- ))
- {
- RaisePropertyChanged("Children");
- RaisePropertyChanged("ChildrenCount");
- }
- else
- {
- if (bNotifyChildren == true &&
- e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace )
- {
- RaisePropertyChanged("Children");
- }
}
}
private void _hiddenAnchorables_CollectionChanged( object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e )
{
- bool bNotifyChildren = false;
-
if( e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove ||
e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace )
{
@@ -835,10 +805,7 @@ private void _hiddenAnchorables_CollectionChanged( object sender, System.Collect
foreach( LayoutAnchorable element in e.OldItems )
{
if( element.Parent == this )
- {
element.Parent = null;
- bNotifyChildren = true;
- }
}
}
}
@@ -854,34 +821,15 @@ private void _hiddenAnchorables_CollectionChanged( object sender, System.Collect
{
if( element.Parent != null )
element.Parent.RemoveChild( element );
-
element.Parent = this;
- bNotifyChildren = true;
}
}
}
}
- // descendants of LayoutElement notify when their Children and ChildrenCount properties change
- // https://github.com/xceedsoftware/wpftoolkit/issues/1313
- //
- if (bNotifyChildren == true &&
- (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove ||
- e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add
- ))
- {
- RaisePropertyChanged("Children");
- RaisePropertyChanged("ChildrenCount");
- }
- else
- {
- if (bNotifyChildren == true &&
- e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Replace )
- {
- RaisePropertyChanged("Children");
- }
- }
+
+
}
private void InternalSetActiveContent( LayoutContent currentValue, LayoutContent newActiveContent )
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx
deleted file mode 100644
index 6566dd82..00000000
--- a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Skrývat automaticky
-
-
- Skrývat automaticky
-
-
- Skrýt
-
-
- Pozice okna
-
-
- Dokovat
-
-
- Dokovat jako záložku
-
-
- Změnit na plovoucí
-
-
- Skrýt
-
-
- Přepnout připnutí
-
-
- Zavřít
-
-
- Zavřít vše
-
-
- Zavřít vše kromě této záložky
-
-
- Pozice okna
-
-
- Dokovat jako záložku
-
-
- Změnit na plovoucí
-
-
- Přesunout do následující skupiny záložek
-
-
- Přesunout do předchozí skupiny záložek
-
-
- Nová horizontální skupina záložek
-
-
- Nová vertikální skupina záložek
-
-
- Maximalizovat
-
-
- Obnovit
-
-
\ No newline at end of file
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.nl-BE.Designer.cs b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.nl-BE.Designer.cs
deleted file mode 100644
index e69de29b..00000000
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.nl-BE.resx b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.nl-BE.resx
deleted file mode 100644
index 03f82cbc..00000000
--- a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.nl-BE.resx
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Automatisch verbergen
-
-
- Automatisch verbergen
-
-
- Verbergen
-
-
- Venster
-
-
- Dokken
-
-
- Dokken als tabblad
-
-
- Laten zweven
-
-
- Verbergen
-
-
- Schakel pin
-
-
- Sluiten
-
-
- Alles sluiten
-
-
- Alles behalve deze sluiten
-
-
- Laten zweven
-
-
- Dokken als tabblad
-
-
- Laten zweven
-
-
- Naar volgende groep tabbladen
-
-
- Naar vorige groep tabbladen
-
-
- Nieuwe horizontale groep tabbladen
-
-
- Nieuwe verticale groep tabbladen
-
-
- Maximaliseren
-
-
- Terugzetten
-
-
\ No newline at end of file
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.Designer.cs b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.Designer.cs
index e69de29b..6893b2a2 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.Designer.cs
+++ b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.Designer.cs
@@ -0,0 +1,16 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx
index e1c7d815..3d292c23 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx
+++ b/source/Components/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx
@@ -142,16 +142,16 @@
隐藏
- 切换固定状态
+ 切換引腳狀態
关闭
- 关闭所有
+ 關閉所有
- 除此之外全部关闭
+ 留此,关闭其他
窗口位置
@@ -178,6 +178,6 @@
最大化
- 还原
+ 恢复
\ No newline at end of file
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Themes/generic.xaml b/source/Components/Xceed.Wpf.AvalonDock/Themes/generic.xaml
index 95cc3af1..7895becc 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Themes/generic.xaml
+++ b/source/Components/Xceed.Wpf.AvalonDock/Themes/generic.xaml
@@ -441,7 +441,8 @@
-
+
@@ -789,15 +790,19 @@
Grid.Row="1" />
+ Grid.Row="0"
+ Grid.RowSpan="3" />
+ Grid.Row="0"
+ Grid.RowSpan="3" />
+
@@ -833,7 +839,7 @@
-
@@ -950,7 +956,7 @@
+ Content="{Binding LayoutItem.View.Content, RelativeSource={RelativeSource TemplatedParent}}" />
+
-
+
@@ -1106,10 +1112,10 @@
BorderBrush="{TemplateBinding BorderBrush}">
-
+
-
+
@@ -1242,9 +1248,9 @@
BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
-
+
-
+
diff --git a/source/Components/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj b/source/Components/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj
index b9ccde82..a76c670e 100644
--- a/source/Components/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj
+++ b/source/Components/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj
@@ -229,11 +229,6 @@
True
Resources.it.resx
-
- True
- True
- Resources.nl-BE.resx
-
True
True
@@ -264,18 +259,11 @@
-
- Designer
-
PublicResXFileCodeGenerator
Resources.hu.Designer.cs
Designer
-
- PublicResXFileCodeGenerator
- Resources.nl-BE.Designer.cs
-
PublicResXFileCodeGenerator
Resources.Designer.cs