Skip to content

Commit

Permalink
V4.1.0 Released
Browse files Browse the repository at this point in the history
  • Loading branch information
XceedBoucherS committed May 18, 2021
1 parent 61789cf commit 1ed1e41
Show file tree
Hide file tree
Showing 461 changed files with 952 additions and 622 deletions.
Expand Up @@ -31,7 +31,7 @@

[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2021" )]



Expand Down
Expand Up @@ -37,6 +37,7 @@
<avalonDockConverters:LayoutItemFromLayoutModelConverter x:Key="LayoutItemFromLayoutModelConverter" />
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<avalonDockConverters:AnchorableContextMenuAutoHideHeaderConverter x:Key="AnchorableContextMenuAutoHideHeaderConverter" />

<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
Expand Down Expand Up @@ -524,6 +525,9 @@
<RotateTransform Angle="90" />
</Setter.Value>
</Setter>
<Setter Property="ToolTip"
TargetName="PART_AutoHidePin"
Value="{x:Static avalonDockProperties:Resources.Window_Restore}" />
</DataTrigger>
<DataTrigger Binding="{Binding Model.CanClose, RelativeSource={RelativeSource Mode=Self}}"
Value="True">
Expand Down Expand Up @@ -979,7 +983,7 @@
Command="{Binding Path=DockCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_DockAsDocument}"
Command="{Binding Path=DockAsDocumentCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_AutoHide}"
<MenuItem Header="{Binding LayoutElement.IsAutoHidden, Converter={StaticResource AnchorableContextMenuAutoHideHeaderConverter}}"
Command="{Binding Path=AutoHideCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Document_Close}"
Command="{Binding Path=CloseCommand}"
Expand Down
Expand Up @@ -31,7 +31,7 @@

[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2021" )]



Expand Down
Expand Up @@ -35,6 +35,7 @@
<avalonDockConverters:LayoutItemFromLayoutModelConverter x:Key="LayoutItemFromLayoutModelConverter" />
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<avalonDockConverters:AnchorableContextMenuAutoHideHeaderConverter x:Key="AnchorableContextMenuAutoHideHeaderConverter" />

<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
Expand Down Expand Up @@ -533,6 +534,9 @@
<RotateTransform Angle="90" />
</Setter.Value>
</Setter>
<Setter Property="ToolTip"
TargetName="PART_AutoHidePin"
Value="{x:Static avalonDockProperties:Resources.Window_Restore}" />
</DataTrigger>
<DataTrigger Binding="{Binding Model.CanClose, RelativeSource={RelativeSource Mode=Self}}"
Value="True">
Expand Down Expand Up @@ -1002,7 +1006,7 @@
Command="{Binding Path=DockCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_DockAsDocument}"
Command="{Binding Path=DockAsDocumentCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_AutoHide}"
<MenuItem Header="{Binding LayoutElement.IsAutoHidden, Converter={StaticResource AnchorableContextMenuAutoHideHeaderConverter}}"
Command="{Binding Path=AutoHideCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Document_Close}"
Command="{Binding Path=CloseCommand}"
Expand Down
Expand Up @@ -31,7 +31,7 @@

[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2021" )]


// Setting ComVisible to false makes the types in this assembly not visible
Expand Down
Expand Up @@ -37,6 +37,7 @@
<avalonDockConverters:LayoutItemFromLayoutModelConverter x:Key="LayoutItemFromLayoutModelConverter" />
<avalonDockConverters:ActivateCommandLayoutItemFromLayoutModelConverter x:Key="ActivateCommandLayoutItemFromLayoutModelConverter" />
<avalonDockConverters:AnchorableContextMenuHideVisibilityConverter x:Key="AnchorableContextMenuHideVisibilityConverter" />
<avalonDockConverters:AnchorableContextMenuAutoHideHeaderConverter x:Key="AnchorableContextMenuAutoHideHeaderConverter" />

<DataTemplate x:Key="DocumentPaneControlContentTemplate">
<avalonDockControls:LayoutDocumentControl Model="{Binding}" />
Expand Down Expand Up @@ -620,6 +621,9 @@
<RotateTransform Angle="90" />
</Setter.Value>
</Setter>
<Setter Property="ToolTip"
TargetName="PART_AutoHidePin"
Value="{x:Static avalonDockProperties:Resources.Window_Restore}" />
</DataTrigger>
<DataTrigger Binding="{Binding Model.IsActive, RelativeSource={RelativeSource Mode=Self}}"
Value="True">
Expand Down Expand Up @@ -1099,7 +1103,7 @@
Command="{Binding Path=DockCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_DockAsDocument}"
Command="{Binding Path=DockAsDocumentCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Anchorable_AutoHide}"
<MenuItem Header="{Binding LayoutElement.IsAutoHidden, Converter={StaticResource AnchorableContextMenuAutoHideHeaderConverter}}"
Command="{Binding Path=AutoHideCommand}" />
<MenuItem Header="{x:Static avalonDockProperties:Resources.Document_Close}"
Command="{Binding Path=CloseCommand}"
Expand Down
Expand Up @@ -192,9 +192,20 @@ internal void Abort()
#region Private Methods

private void GetOverlayWindowHosts()
{
_overlayWindowHosts.AddRange( _manager.GetFloatingWindowsByZOrder().OfType<LayoutAnchorableFloatingWindowControl>().Where( fw => fw != _floatingWindow && fw.IsVisible ) );
_overlayWindowHosts.Add( _manager );
{
var windows = _manager.GetWindowsByZOrder().Where( w => (w != _floatingWindow) && w.IsVisible );

foreach( var w in windows )
{
if( w == Window.GetWindow( _manager ) )
{
_overlayWindowHosts.Add( _manager );
}
else if( w is LayoutAnchorableFloatingWindowControl )
{
_overlayWindowHosts.Add( w as LayoutAnchorableFloatingWindowControl );
}
}
}

#endregion
Expand Down
Expand Up @@ -116,10 +116,6 @@ public void Drop( LayoutFloatingWindow floatingWindow )
{
Dispatcher.BeginInvoke( new Action( () =>
{
if( ( currentActiveContent.Root != null ) && ( currentActiveContent.Root.Manager != null ) )
{
currentActiveContent.Root.Manager.MoveFocus( new TraversalRequest( FocusNavigationDirection.Next ) );
}
currentActiveContent.IsSelected = false;
currentActiveContent.IsActive = false;
currentActiveContent.IsActive = true;
Expand Down
Expand Up @@ -97,6 +97,8 @@ protected override void OnSelectionChanged( SelectionChangedEventArgs e )








Expand Down
Expand Up @@ -524,6 +524,11 @@ internal void BringFocusOnDockingManager()
}
}

internal bool IsClosing()
{
return _isClosing;
}

#endregion

#region Private Methods
Expand Down
@@ -0,0 +1,39 @@
/*************************************************************************************
Toolkit for WPF
Copyright (C) 2007-2020 Xceed Software Inc.
This program is provided to you under the terms of the XCEED SOFTWARE, INC.
COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at
https://github.com/xceedsoftware/wpftoolkit/blob/master/license.md
For more features, controls, and fast professional support,
pick up the Plus Edition at https://xceed.com/xceed-toolkit-plus-for-wpf/
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
***********************************************************************************/

using System;
using System.Windows.Data;
using System.Globalization;
using Xceed.Wpf.AvalonDock.Properties;

namespace Xceed.Wpf.AvalonDock.Converters
{
public class AnchorableContextMenuAutoHideHeaderConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
var isAutoHidden = value as bool?;

return (isAutoHidden != null) && isAutoHidden.Value ? Resources.Window_Restore : Resources.Anchorable_AutoHide;
}

public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
Expand Up @@ -97,6 +97,10 @@ public DockingManager()







#region Layout

/// <summary>
Expand Down Expand Up @@ -2136,7 +2140,10 @@ internal UIElement CreateUIElementForModel( ILayoutElement model )

Dispatcher.BeginInvoke( new Action( () =>
{
newFW.Show();
if( newFW.IsClosing() )
return;
newFW.Show();
// Do not set the WindowState before showing or it will be lost
if( paneForExtensions != null && paneForExtensions.IsMaximized )
Expand Down Expand Up @@ -2232,6 +2239,9 @@ internal void StartDraggingFloatingWindowForContent( LayoutContent contentModel,
{
Dispatcher.BeginInvoke( new Action( () =>
{
if( fwc.IsClosing() )
return;
if( startDrag )
fwc.AttachDrag();
fwc.Show();
Expand Down Expand Up @@ -2277,6 +2287,41 @@ internal IEnumerable<LayoutFloatingWindowControl> GetFloatingWindowsByZOrder()
}
}

internal IEnumerable<Window> GetWindowsByZOrder()
{
IntPtr windowParentHanlde;
var parentWindow = Window.GetWindow( this );
if( parentWindow != null )
{
windowParentHanlde = new WindowInteropHelper( parentWindow ).Handle;
}
else
{
var mainProcess = Process.GetCurrentProcess();
if( mainProcess == null )
yield break;

windowParentHanlde = mainProcess.MainWindowHandle;
}

IntPtr currentHandle = Win32Helper.GetWindow( windowParentHanlde, ( uint )Win32Helper.GetWindow_Cmd.GW_HWNDFIRST );
while( currentHandle != IntPtr.Zero )
{
if( windowParentHanlde == currentHandle )
{
yield return parentWindow;
}
else
{
LayoutFloatingWindowControl ctrl = _fwList.FirstOrDefault( fw => new WindowInteropHelper( fw ).Handle == currentHandle );
if( ctrl != null && ctrl.Model.Root.Manager == this )
yield return ctrl;
}

currentHandle = Win32Helper.GetWindow( currentHandle, ( uint )Win32Helper.GetWindow_Cmd.GW_HWNDNEXT );
}
}

internal void RemoveFloatingWindow( LayoutFloatingWindowControl floatingWindow )
{
_fwList.Remove( floatingWindow );
Expand Down Expand Up @@ -3359,21 +3404,25 @@ private void UpdateStarSize( LayoutContent contentModel )
return;

var parentPane = contentModel.Parent as ILayoutPositionableElement;
if( parentPane != null)
if( parentPane != null )
{
// Reset Dock Size of floating LayoutContent
if( parentPane.DockWidth.IsStar )
{
parentPane.DockWidth = new GridLength( 1d, GridUnitType.Star );
}
if( parentPane.DockHeight.IsStar )
var parentLayoutContainer = parentPane as ILayoutContainer;
if( ( parentLayoutContainer != null ) && ( parentLayoutContainer.ChildrenCount == 1 ) )
{
parentPane.DockHeight = new GridLength( 1d, GridUnitType.Star );
// Reset Dock Size of floating LayoutContent
if( parentPane.DockWidth.IsStar )
{
parentPane.DockWidth = new GridLength( 1d, GridUnitType.Star );
}
if( parentPane.DockHeight.IsStar )
{
parentPane.DockHeight = new GridLength( 1d, GridUnitType.Star );
}
}

var grandParentPaneOrientation = parentPane.Parent as ILayoutOrientableGroup;
var grandParentPane = parentPane.Parent as ILayoutPositionableElement;
if( (grandParentPaneOrientation != null) && (grandParentPane != null) )
if( ( grandParentPaneOrientation != null ) && ( grandParentPane != null ) )
{
if( grandParentPaneOrientation.Orientation == Orientation.Horizontal )
{
Expand All @@ -3383,7 +3432,10 @@ private void UpdateStarSize( LayoutContent contentModel )
var grandParentPaneContainer = parentPane.Parent as ILayoutContainer;
if( grandParentPaneContainer != null )
{
var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast<ILayoutPositionableElement>().Where( child => child.DockWidth.IsStar );
var children = grandParentPaneContainer.Children.Where( child => ( child.Equals( parentPane ) && ( parentPane is ILayoutContainer ) && ( ( ( ILayoutContainer )parentPane ).ChildrenCount > 1 ) )
|| !child.Equals( parentPane ) )
.Cast<ILayoutPositionableElement>()
.Where( child => child.DockHeight.IsStar );
var childrenTotalWidth = children.Sum( child => child.DockWidth.Value );
foreach( var child in children )
{
Expand All @@ -3400,7 +3452,10 @@ private void UpdateStarSize( LayoutContent contentModel )
var grandParentPaneContainer = parentPane.Parent as ILayoutContainer;
if( grandParentPaneContainer != null )
{
var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast<ILayoutPositionableElement>().Where( child => child.DockHeight.IsStar );
var children = grandParentPaneContainer.Children.Where( child => ( child.Equals( parentPane ) && ( parentPane is ILayoutContainer ) && ( ( ( ILayoutContainer )parentPane ).ChildrenCount > 1 ) )
|| !child.Equals( parentPane ) )
.Cast<ILayoutPositionableElement>()
.Where( child => child.DockHeight.IsStar );
var childrenTotalHeight = children.Sum( child => child.DockHeight.Value );
foreach( var child in children )
{
Expand Down
Expand Up @@ -664,18 +664,18 @@ public void ToggleAutoHide()
cnt.PreviousContainer = previousContainer;
}

foreach( var anchorableToToggle in parentGroup.Children.ToArray() )
{
previousContainer.Children.Add( anchorableToToggle );
}
previousContainer.Children.Add( this );

if( previousContainer.Children.Count > 0 )
{
// Select the LayoutContent where the Toggle pin button was pressed.
previousContainer.SelectedContentIndex = previousContainer.Children.IndexOf( this );
}

parentSide.Children.Remove( parentGroup );
if( parentGroup.Children.Count == 0 )
{
parentSide.Children.Remove( parentGroup );
}

var parent = previousContainer.Parent as LayoutGroupBase;
while( ( parent != null ) )
Expand All @@ -699,8 +699,7 @@ public void ToggleAutoHide()

( ( ILayoutPreviousContainer )newAnchorGroup ).PreviousContainer = parentPane;

foreach( var anchorableToImport in parentPane.Children.ToArray() )
newAnchorGroup.Children.Add( anchorableToImport );
newAnchorGroup.Children.Add( this );

//detect anchor side for the pane
var anchorSide = parentPane.GetSide();
Expand Down
Expand Up @@ -31,7 +31,7 @@

[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2020" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2021" )]
[assembly: AssemblyCulture( "" )]


Expand Down

0 comments on commit 1ed1e41

Please sign in to comment.