From 59dd599ec01605d050e4b33578ed9dd1e625d726 Mon Sep 17 00:00:00 2001 From: Simon Boucher Date: Thu, 7 Jan 2021 07:58:14 -0500 Subject: [PATCH] V4.0.2 Released --- .../Theme.xaml | 4 +- .../Theme.xaml | 4 +- .../Theme.xaml | 4 +- .../Controls/DocumentPaneDropTarget.cs | 80 + .../LayoutAnchorableFloatingWindowControl.cs | 2 + .../Controls/LayoutAnchorablePaneControl.cs | 30 +- .../Controls/LayoutCachePaneControl.cs | 3 +- .../Controls/LayoutDocumentControl.cs | 26 +- .../LayoutDocumentFloatingWindowControl.cs | 3 + .../Controls/LayoutDocumentPaneControl.cs | 30 +- .../Controls/LayoutFloatingWindowControl.cs | 22 + .../Controls/LayoutGridControl.cs | 15 +- .../Xceed.Wpf.AvalonDock/DockingManager.cs | 66 +- .../Xceed.Wpf.AvalonDock/Layout/Extentions.cs | 20 +- .../Layout/ILayoutInitialContainer.cs | 32 + .../Layout/LayoutAnchorable.cs | 25 +- .../Layout/LayoutContent.cs | 109 +- .../Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs | 17 +- .../Layout/Serialization/LayoutSerializer.cs | 9 + .../Properties/Resources.Designer.cs | 4 +- .../Properties/Resources.cs-CZ.resx | 2 +- .../Properties/Resources.de.resx | 2 +- .../Properties/Resources.es.resx | 2 +- .../Properties/Resources.fr.resx | 2 +- .../Properties/Resources.hu.resx | 2 +- .../Properties/Resources.it.resx | 2 +- .../Properties/Resources.ja-JP.Designer.cs | 17 + .../Properties/Resources.ja-JP.resx | 183 +++ .../Properties/Resources.pt-BR.resx | 4 +- .../Properties/Resources.resx | 2 +- .../Properties/Resources.ro.resx | 2 +- .../Properties/Resources.ru.resx | 2 +- .../Properties/Resources.sv.resx | 2 +- .../Properties/Resources.zh-Hans.resx | 2 +- .../Xceed.Wpf.AvalonDock/Themes/Default.xaml | 1438 +++++++++++++++++ .../Generic/Images/PinAutoHide_White.png | Bin 0 -> 171 bytes .../Themes/Generic/Images/PinClose_White.png | Bin 0 -> 187 bytes .../Generic/Images/PinDocMenu_White.png | Bin 0 -> 168 bytes .../Generic/Images/PinMaximize_White.png | Bin 0 -> 170 bytes .../Themes/Generic/Images/PinMenu_White.png | Bin 0 -> 162 bytes .../Generic/Images/PinRestore_White.png | Bin 0 -> 191 bytes .../Xceed.Wpf.AvalonDock/Themes/generic.xaml | 1422 +--------------- .../Xceed.Wpf.AvalonDock.csproj | 31 + .../MultiLineTextEditorView.xaml.txt | 2 +- .../CodeFiles/SwitchPanelView.xaml.txt | 8 +- .../CodeFiles/ThemingAvalonDockView.xaml.txt | 2 +- .../CodeFiles/ThemingDataGridView.xaml.txt | 2 +- .../ThemingExtendedToolkitView.xaml.txt | 2 +- .../CodeFiles/ThemingListBoxView.xaml.txt | 2 +- .../CodeFiles/WindowContainerView.xaml.txt | 3 +- .../CodeFiles/ZoomboxView.xaml.txt | 8 +- .../MainWindow.xaml | 35 +- .../Resources/TextBlockStyles.xaml | 8 +- .../BusyIndicator/Resources/Common.xaml | 3 +- .../Samples/Panels/Views/SwitchPanelView.xaml | 8 +- .../Text/Views/MultiLineTextEditorView.xaml | 2 +- .../Theming/Views/ThemingAvalonDockView.xaml | 2 +- .../Theming/Views/ThemingDataGridView.xaml | 2 +- .../Views/ThemingExtendedToolkitView.xaml | 2 +- .../Theming/Views/ThemingListBoxView.xaml | 2 +- .../Window/Views/WindowContainerView.xaml | 3 +- .../Samples/Zoombox/Views/ZoomboxView.xaml | 8 +- .../Images/Delete16_White.png | Bin 0 -> 232 bytes .../Images/Duplicate_White.png | Bin 0 -> 188 bytes .../CollectionControlDialog.xaml.cs | 20 + .../Core/VersionResourceDictionary.cs | 7 +- .../Implementation/DateTimePicker.cs | 5 +- .../Implementation/DropDownButton.cs | 2 +- .../Magnifier/Themes/Generic.xaml | 5 + .../Implementation/MaskedTextBox.cs | 2 +- .../MultiLineTextEditor/Images/Notes16.png | Bin 601 -> 0 bytes .../Themes/Aero2.NormalColor.xaml | 14 +- .../MultiLineTextEditor/Themes/Generic.xaml | 9 +- .../Primitives/DateTimeUpDownBase.cs | 4 +- .../Xceed.Wpf.Toolkit/Primitives/Selector.cs | 30 +- .../Images/ClearFilter16_Green.png | Bin 0 -> 227 bytes .../Images/ClearFilter16_White.png | Bin 0 -> 232 bytes .../Images/SortAscending16_White.png | Bin 0 -> 369 bytes .../Implementation/PropertyItem.cs | 9 +- .../Images/Bold_White16.png | Bin 0 -> 183 bytes .../Images/Bullets_White16.png | Bin 0 -> 157 bytes .../Images/CenterAlign_White16.png | Bin 0 -> 149 bytes .../Images/FontColorPicker_White16.png | Bin 0 -> 219 bytes .../Images/Italic_White16.png | Bin 0 -> 181 bytes .../Images/LeftAlign_White16.png | Bin 0 -> 149 bytes .../Images/Numbering_White16.png | Bin 0 -> 194 bytes .../Images/RightAlign_White16.png | Bin 0 -> 148 bytes .../TextHighlightColorPicker_White16.png | Bin 0 -> 368 bytes .../Images/Underline_White16.png | Bin 0 -> 184 bytes .../RichTextBoxFormatBarManager.cs | 4 +- .../Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml | 21 +- .../Wizard/Implementation/Wizard.cs | 30 +- .../Xceed.Wpf.Toolkit.csproj | 48 +- .../Xceed.Wpf.Toolkit.sln | 2 +- 94 files changed, 2354 insertions(+), 1584 deletions(-) create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinAutoHide_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinClose_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinDocMenu_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMaximize_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMenu_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinRestore_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Delete16_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Duplicate_White.png delete mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Images/Notes16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_Green.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/SortAscending16_White.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bold_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bullets_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/CenterAlign_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/FontColorPicker_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Italic_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/LeftAlign_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Numbering_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/RightAlign_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/TextHighlightColorPicker_White16.png create mode 100644 ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Underline_White16.png diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml index 4553b6578..b9f950313 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml @@ -131,7 +131,6 @@ CornerRadius="2"> @@ -324,7 +323,6 @@ KeyboardNavigation.TabNavigation="Cycle"> @@ -509,7 +507,7 @@ HorizontalAlignment="Center" Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" - ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"> + ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}"> diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml index a6dd99f33..f4bd1bb44 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml @@ -163,7 +163,6 @@ Padding="0,1,0,2"> @@ -334,7 +333,6 @@ KeyboardNavigation.TabNavigation="Cycle"> @@ -518,7 +516,7 @@ HorizontalAlignment="Center" Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" - ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"> + ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}"> diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml index 8bb8e729b..f93be594b 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml @@ -196,7 +196,6 @@ Padding="0,1,0,2"> @@ -417,7 +416,6 @@ KeyboardNavigation.TabNavigation="Cycle"> @@ -605,7 +603,7 @@ HorizontalAlignment="Center" Command="{Binding Path=LayoutItem.HideCommand, RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" - ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_BtnClose_Hint}"> + ToolTip="{x:Static avalonDockProperties:Resources.Anchorable_Hide}"> diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs index 813f90f87..153eef3d1 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs @@ -61,6 +61,16 @@ protected override void Drop( LayoutDocumentFloatingWindow floatingWindow ) #region DropTargetType.DocumentPaneDockBottom { var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument ); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockHeight.IsStar ) + { + targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockHeight = targetPane.DockHeight; + } + } var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; if( parentModel == null ) @@ -97,6 +107,16 @@ protected override void Drop( LayoutDocumentFloatingWindow floatingWindow ) #region DropTargetType.DocumentPaneDockTop { var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument ); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockHeight.IsStar ) + { + targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockHeight = targetPane.DockHeight; + } + } var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; if( parentModel == null ) @@ -133,6 +153,16 @@ protected override void Drop( LayoutDocumentFloatingWindow floatingWindow ) #region DropTargetType.DocumentPaneDockLeft { var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument ); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockWidth.IsStar ) + { + targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockWidth = targetPane.DockWidth; + } + } var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; if( parentModel == null ) @@ -168,6 +198,16 @@ protected override void Drop( LayoutDocumentFloatingWindow floatingWindow ) #region DropTargetType.DocumentPaneDockRight { var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument ); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockWidth.IsStar ) + { + targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockWidth = targetPane.DockWidth; + } + } var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; if( parentModel == null ) @@ -247,6 +287,16 @@ protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow ) { var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; var newLayoutDocumentPane = new LayoutDocumentPane(); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockHeight.IsStar ) + { + targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockHeight = targetPane.DockHeight; + } + } if( parentModel == null ) { @@ -286,6 +336,16 @@ protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow ) { var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; var newLayoutDocumentPane = new LayoutDocumentPane(); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockHeight.IsStar ) + { + targetPane.DockHeight = new GridLength( targetPane.DockHeight.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockHeight = targetPane.DockHeight; + } + } if( parentModel == null ) { @@ -325,6 +385,16 @@ protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow ) { var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; var newLayoutDocumentPane = new LayoutDocumentPane(); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockWidth.IsStar ) + { + targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockWidth = targetPane.DockWidth; + } + } if( parentModel == null ) { @@ -365,6 +435,16 @@ protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow ) { var parentModel = targetModel.Parent as LayoutDocumentPaneGroup; var newLayoutDocumentPane = new LayoutDocumentPane(); + var targetPane = targetModel as ILayoutPositionableElement; + if( targetPane != null ) + { + // Set the DockWidth of the targetPane and the newLayoutDocumentPane so they both use the same size. + if( targetPane.DockWidth.IsStar ) + { + targetPane.DockWidth = new GridLength( targetPane.DockWidth.Value / 2d, GridUnitType.Star ); + newLayoutDocumentPane.DockWidth = targetPane.DockWidth; + } + } if( parentModel == null ) { diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs index 590fce122..f1a9563e5 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableFloatingWindowControl.cs @@ -347,6 +347,8 @@ private void OnExecuteHideWindowCommand( object parameter ) var anchorableLayoutItem = manager.GetLayoutItemFromModel( anchorable ) as LayoutAnchorableItem; anchorableLayoutItem.HideCommand.Execute( parameter ); } + + this.BringFocusOnDockingManager(); } #endregion diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs index 14a3dbd82..c9ff68609 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneControl.cs @@ -82,13 +82,17 @@ protected override void OnMouseLeftButtonDown( System.Windows.Input.MouseButtonE { base.OnMouseLeftButtonDown( e ); - var parentDockingManager = ((Visual)e.OriginalSource).FindVisualAncestor(); - if ((this.Model != null) && (this.Model.Root != null) && (this.Model.Root.Manager != null) - && this.Model.Root.Manager.Equals(parentDockingManager)) + if( e.OriginalSource is Visual ) { - if (!e.Handled && (_model != null) && (_model.SelectedContent != null) ) + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) { - _model.SelectedContent.IsActive = true; + if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + { + _model.SelectedContent.IsActive = true; + } } } } @@ -97,15 +101,19 @@ protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButton { base.OnMouseRightButtonDown( e ); - var parentDockingManager = ((Visual)e.OriginalSource).FindVisualAncestor(); - if ((this.Model != null) && (this.Model.Root != null) && (this.Model.Root.Manager != null) - && this.Model.Root.Manager.Equals(parentDockingManager)) + if( e.OriginalSource is Visual ) { - if (!e.Handled && (_model != null) && (_model.SelectedContent != null)) + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) { - _model.SelectedContent.IsActive = true; + if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + { + _model.SelectedContent.IsActive = true; + } } - } + } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs index 45be44dfc..a92e29764 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutCachePaneControl.cs @@ -16,9 +16,11 @@ COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at ***********************************************************************************/ +using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Data; +using System.Linq; using Xceed.Wpf.AvalonDock.Layout; namespace Xceed.Wpf.AvalonDock.Controls @@ -96,7 +98,6 @@ protected override void OnSelectionChanged( SelectionChangedEventArgs e ) - } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs index 252cffdad..2e5f0b4fa 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentControl.cs @@ -163,23 +163,33 @@ protected override void OnPreviewGotKeyboardFocus( KeyboardFocusChangedEventArgs protected override void OnPreviewMouseLeftButtonDown( MouseButtonEventArgs e ) { - var parentDockingManager = ((Visual)e.OriginalSource).FindVisualAncestor(); - if ((this.Model != null) && (this.Model.Root != null) && (this.Model.Root.Manager != null) - && this.Model.Root.Manager.Equals(parentDockingManager)) + if( e.OriginalSource is Visual ) { - this.SetIsActive(); + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) + { + this.SetIsActive(); + } } + base.OnPreviewMouseLeftButtonDown( e ); } protected override void OnPreviewMouseRightButtonDown( MouseButtonEventArgs e ) { - var parentDockingManager = ((Visual)e.OriginalSource).FindVisualAncestor(); - if ((this.Model != null) && (this.Model.Root != null) && (this.Model.Root.Manager != null) - && this.Model.Root.Manager.Equals(parentDockingManager)) + if( e.OriginalSource is Visual ) { - this.SetIsActive(); + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) + { + this.SetIsActive(); + } } + base.OnPreviewMouseRightButtonDown( e ); } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs index 47fd6b20d..c66e51003 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentFloatingWindowControl.cs @@ -59,6 +59,9 @@ public LayoutItem RootDocumentLayoutItem { get { + if( ( _model == null ) || ( _model.Root == null ) || ( _model.Root.Manager == null ) ) + return null; + return _model.Root.Manager.GetLayoutItemFromModel( _model.RootDocument ); } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs index 501dde177..00cf0600d 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneControl.cs @@ -93,28 +93,36 @@ protected override void OnMouseLeftButtonDown( System.Windows.Input.MouseButtonE { base.OnMouseLeftButtonDown( e ); - var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); - if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) - && this.Model.Root.Manager.Equals( parentDockingManager ) ) + if( e.OriginalSource is Visual ) { - if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) { - _model.SelectedContent.IsActive = true; + if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + { + _model.SelectedContent.IsActive = true; + } } - } + } } protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e ) { base.OnMouseRightButtonDown( e ); - var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); - if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) - && this.Model.Root.Manager.Equals( parentDockingManager ) ) + if( e.OriginalSource is Visual ) { - if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + var parentDockingManager = ( ( Visual )e.OriginalSource ).FindVisualAncestor(); + + if( ( this.Model != null ) && ( this.Model.Root != null ) && ( this.Model.Root.Manager != null ) + && this.Model.Root.Manager.Equals( parentDockingManager ) ) { - _model.SelectedContent.IsActive = true; + if( !e.Handled && ( _model != null ) && ( _model.SelectedContent != null ) ) + { + _model.SelectedContent.IsActive = true; + } } } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs index c7721d375..ba9a439cb 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutFloatingWindowControl.cs @@ -290,6 +290,8 @@ protected override void OnClosed( EventArgs e ) { root.FloatingWindows.Remove( this.Model as LayoutFloatingWindow ); } + + this.BringFocusOnDockingManager(); } protected override void OnInitialized( EventArgs e ) @@ -502,6 +504,26 @@ internal void InternalClose() } } + internal void BringFocusOnDockingManager() + { + // Prevent focus lost on MainWindow when closing floatingWindows. + if( this.Owner != null ) + { + this.Owner.Focus(); + } + else + { + if( (this.Model != null) && ( this.Model.Root != null) && ( this.Model.Root.Manager != null ) ) + { + var firstUIElement = this.Model.Root.Manager.FindVisualChildren().Where( control => control.Focusable ).FirstOrDefault(); + if( firstUIElement != null ) + { + firstUIElement.Focus(); + } + } + } + } + #endregion #region Private Methods diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs index ebfa1e48f..4ec5413f8 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutGridControl.cs @@ -394,7 +394,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri trToWnd.Transform( new Point() ); double delta; - if( Orientation == System.Windows.Controls.Orientation.Horizontal ) + if( Orientation == Orientation.Horizontal ) delta = Canvas.GetLeft( _resizerGhost ) - _initialStartPoint.X; else delta = Canvas.GetTop( _resizerGhost ) - _initialStartPoint.Y; @@ -406,15 +406,18 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri var prevChildActualSize = prevChild.TransformActualSizeToAncestor(); var nextChildActualSize = (nextChild != null) ? nextChild.TransformActualSizeToAncestor() : new Size(); + var totalActualSize = new Size(prevChildActualSize.Width + nextChildActualSize.Width, prevChildActualSize.Height + nextChildActualSize.Height ); var prevChildModel = ( ILayoutPositionableElement )( prevChild as ILayoutControl ).Model; var nextChildModel = (nextChild != null) ? ( ILayoutPositionableElement )( nextChild as ILayoutControl ).Model : null; + var totalStarSize = new Size( prevChildModel.DockWidth.IsStar && nextChildModel.DockWidth.IsStar ? prevChildModel.DockWidth.Value + nextChildModel.DockWidth.Value : 1d, + prevChildModel.DockHeight.IsStar && nextChildModel.DockHeight.IsStar ? prevChildModel.DockHeight.Value + nextChildModel.DockHeight.Value : 1d ); - if( Orientation == System.Windows.Controls.Orientation.Horizontal ) + if( Orientation == Orientation.Horizontal ) { if( prevChildModel.DockWidth.IsStar ) { - prevChildModel.DockWidth = new GridLength( prevChildActualSize.Width + delta, GridUnitType.Star ); + prevChildModel.DockWidth = new GridLength( ((prevChildActualSize.Width + delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star ); } else { @@ -428,7 +431,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri { if( nextChildModel.DockWidth.IsStar ) { - nextChildModel.DockWidth = new GridLength( nextChildActualSize.Width - delta, GridUnitType.Star ); + nextChildModel.DockWidth = new GridLength( ((nextChildActualSize.Width - delta) / totalActualSize.Width) * totalStarSize.Width, GridUnitType.Star ); } else { @@ -443,7 +446,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri { if( prevChildModel.DockHeight.IsStar ) { - prevChildModel.DockHeight = new GridLength( prevChildActualSize.Height + delta, GridUnitType.Star ); + prevChildModel.DockHeight = new GridLength( ((prevChildActualSize.Height + delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star ); } else { @@ -457,7 +460,7 @@ private void OnSplitterDragCompleted( object sender, System.Windows.Controls.Pri { if( nextChildModel.DockHeight.IsStar ) { - nextChildModel.DockHeight = new GridLength( nextChildActualSize.Height - delta, GridUnitType.Star ); + nextChildModel.DockHeight = new GridLength( ((nextChildActualSize.Height - delta) / totalActualSize.Height) * totalStarSize.Height, GridUnitType.Star ); } else { diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs index 919849e68..8a6059d21 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/DockingManager.cs @@ -2143,7 +2143,7 @@ internal UIElement CreateUIElementForModel( ILayoutElement model ) { newFW.WindowState = WindowState.Maximized; } - } ), DispatcherPriority.Send ); + } ), DispatcherPriority.DataBind ); return newFW; } @@ -2365,7 +2365,7 @@ internal void _ExecuteContentActivateCommand( LayoutContent content ) content.IsActive = true; } - internal void ShowNavigatorWindow() + protected internal virtual void ShowNavigatorWindow() { if( _navigatorWindow == null ) { @@ -3259,6 +3259,8 @@ private LayoutFloatingWindowControl CreateFloatingWindowCore( LayoutContent cont contentModelAsAnchorable.IsAutoHidden ) contentModelAsAnchorable.ToggleAutoHide(); + this.UpdateStarSize( contentModel ); + var parentPane = contentModel.Parent as ILayoutPane; var parentPaneAsPositionableElement = contentModel.Parent as ILayoutPositionableElement; var parentPaneAsWithActualSize = contentModel.Parent as ILayoutPositionableElementWithActualSize; @@ -3351,6 +3353,66 @@ private LayoutFloatingWindowControl CreateFloatingWindowCore( LayoutContent cont return fwc; } + private void UpdateStarSize( LayoutContent contentModel ) + { + if( contentModel == null ) + return; + + var parentPane = contentModel.Parent as ILayoutPositionableElement; + if( parentPane != null) + { + // 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.Orientation == Orientation.Horizontal ) + { + // Reset Dock Width of remaining LayoutContent + if( grandParentPane.DockWidth.IsStar ) + { + var grandParentPaneContainer = parentPane.Parent as ILayoutContainer; + if( grandParentPaneContainer != null ) + { + var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast().Where( child => child.DockWidth.IsStar ); + var childrenTotalWidth = children.Sum( child => child.DockWidth.Value ); + foreach( var child in children ) + { + child.DockWidth = new GridLength( child.DockWidth.Value / childrenTotalWidth, GridUnitType.Star ); + } + } + } + } + else + { + // Reset Dock Height of remaining LayoutContent + if( grandParentPane.DockHeight.IsStar ) + { + var grandParentPaneContainer = parentPane.Parent as ILayoutContainer; + if( grandParentPaneContainer != null ) + { + var children = grandParentPaneContainer.Children.Where( child => !child.Equals( parentPane ) ).Cast().Where( child => child.DockHeight.IsStar ); + var childrenTotalHeight = children.Sum( child => child.DockHeight.Value ); + foreach( var child in children ) + { + child.DockHeight = new GridLength( child.DockHeight.Value / childrenTotalHeight, GridUnitType.Star ); + } + } + } + } + } + } + } + private void AnchorableContextMenu_Opened( object sender, RoutedEventArgs e ) { var anchorableContextMenu = sender as ContextMenu; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs index 7b42596f2..7128646a0 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Extentions.cs @@ -113,14 +113,30 @@ public static AnchorSide GetSide( this ILayoutElement element ) if( layoutPanel.Orientation == System.Windows.Controls.Orientation.Horizontal ) { if( currentChildID < 0 ) + { return AnchorSide.Right; - return ( currentChildID <= ( childrenCount / 2 ) ) ? AnchorSide.Left : AnchorSide.Right; + } + else + { + if( childrenCount == 1 ) + return AnchorSide.Left; + + return ( currentChildID < ( childrenCount / 2d ) ) ? AnchorSide.Left : AnchorSide.Right; + } } else { if( currentChildID < 0 ) + { return AnchorSide.Bottom; - return ( currentChildID <= ( childrenCount / 2 ) ) ? AnchorSide.Top : AnchorSide.Bottom; + } + else + { + if( childrenCount == 1 ) + return AnchorSide.Top; + + return ( currentChildID < ( childrenCount / 2d ) ) ? AnchorSide.Top : AnchorSide.Bottom; + } } } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs new file mode 100644 index 000000000..a2f7ea7bf --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutInitialContainer.cs @@ -0,0 +1,32 @@ +/************************************************************************************* + + 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 + + ***********************************************************************************/ + +namespace Xceed.Wpf.AvalonDock.Layout +{ + interface ILayoutInitialContainer + { + ILayoutContainer InitialContainer + { + get; set; + } + + string InitialContainerId + { + get; set; + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs index ac5f677c9..c5f77504f 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutAnchorable.cs @@ -415,14 +415,16 @@ public void Hide( bool cancelable = true ) RaisePropertyChanging( "IsHidden" ); RaisePropertyChanging( "IsVisible" ); - //if (Parent is ILayoutPane) + + this.InitialContainer = this.PreviousContainer as ILayoutPane; + this.InitialContainerIndex = this.PreviousContainerIndex; + this.InitialContainerId = this.PreviousContainerId; + + var parentAsGroup = this.Parent as ILayoutGroup; + this.PreviousContainer = parentAsGroup; + if( parentAsGroup != null ) { - var parentAsGroup = Parent as ILayoutGroup; - PreviousContainer = parentAsGroup; - if( parentAsGroup != null ) - { - PreviousContainerIndex = parentAsGroup.IndexOfChild( this ); - } + this.PreviousContainerIndex = parentAsGroup.IndexOfChild( this ); } if( this.Root != null ) { @@ -478,8 +480,13 @@ public void Show() } } - PreviousContainer = null; - PreviousContainerIndex = -1; + // When InitialContainer exists, set it to PreviousContainer in order to dock in expected position. + this.PreviousContainer = ( this.InitialContainer != null) ? this.InitialContainer : null; + this.PreviousContainerIndex = ( this.InitialContainerIndex != -1 ) ? this.InitialContainerIndex : -1; + + this.InitialContainer = null; + this.InitialContainerIndex = -1; + this.InitialContainerId = null; RaisePropertyChanged( "IsVisible" ); RaisePropertyChanged( "IsHidden" ); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs index 0d9815f88..e614ecd71 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs @@ -29,7 +29,7 @@ namespace Xceed.Wpf.AvalonDock.Layout { [ContentProperty( "Content" )] [Serializable] - public abstract class LayoutContent : LayoutElement, IXmlSerializable, ILayoutElementForFloatingWindow, IComparable, ILayoutPreviousContainer + public abstract class LayoutContent : LayoutElement, IXmlSerializable, ILayoutElementForFloatingWindow, IComparable, ILayoutPreviousContainer, ILayoutInitialContainer { #region Constructors @@ -311,6 +311,66 @@ protected set #endregion + #region InitialContainer + + [field: NonSerialized] + private ILayoutContainer _initialContainer = null; + + [XmlIgnore] + ILayoutContainer ILayoutInitialContainer.InitialContainer + { + get + { + return _initialContainer; + } + set + { + if( _initialContainer != value ) + { + _initialContainer = value; + RaisePropertyChanged( "InitialContainer" ); + + var paneSerializable = _initialContainer as ILayoutPaneSerializable; + if( paneSerializable != null && + paneSerializable.Id == null ) + paneSerializable.Id = Guid.NewGuid().ToString(); + } + } + } + + internal ILayoutContainer InitialContainer + { + get + { + return ( ( ILayoutInitialContainer )this ).InitialContainer; + } + set + { + ( ( ILayoutInitialContainer )this ).InitialContainer = value; + } + } + + [XmlIgnore] + string ILayoutInitialContainer.InitialContainerId + { + get; + set; + } + + internal string InitialContainerId + { + get + { + return ( ( ILayoutInitialContainer )this ).InitialContainerId; + } + set + { + ( ( ILayoutInitialContainer )this ).InitialContainerId = value; + } + } + + #endregion + #region PreviousContainerIndex [field: NonSerialized] private int _previousContainerIndex = -1; @@ -333,6 +393,28 @@ public int PreviousContainerIndex #endregion + #region InitialContainerIndex + [field: NonSerialized] + private int _initialContainerIndex = -1; + [XmlIgnore] + internal int InitialContainerIndex + { + get + { + return _initialContainerIndex; + } + set + { + if( _initialContainerIndex != value ) + { + _initialContainerIndex = value; + RaisePropertyChanged( "InitialContainerIndex" ); + } + } + } + + #endregion + #region LastActivationTimeStamp private DateTime? _lastActivationTimeStamp = null; @@ -655,6 +737,10 @@ public virtual void ReadXml( System.Xml.XmlReader reader ) PreviousContainerId = reader.Value; if( reader.MoveToAttribute( "PreviousContainerIndex" ) ) PreviousContainerIndex = int.Parse( reader.Value ); + if( reader.MoveToAttribute( "InitialContainerId" ) ) + InitialContainerId = reader.Value; + if( reader.MoveToAttribute( "InitialContainerIndex" ) ) + InitialContainerIndex = int.Parse( reader.Value ); if( reader.MoveToAttribute( "FloatingLeft" ) ) FloatingLeft = double.Parse( reader.Value, CultureInfo.InvariantCulture ); @@ -726,6 +812,15 @@ public virtual void WriteXml( System.Xml.XmlWriter writer ) writer.WriteAttributeString( "PreviousContainerIndex", _previousContainerIndex.ToString() ); } } + if( _initialContainer != null ) + { + var paneSerializable = _initialContainer as ILayoutPaneSerializable; + if( paneSerializable != null ) + { + writer.WriteAttributeString( "InitialContainerId", paneSerializable.Id ); + writer.WriteAttributeString( "InitialContainerIndex", _initialContainerIndex.ToString() ); + } + } } @@ -856,15 +951,17 @@ public void Dock() InternalDock(); } - - Root.CollectGarbage(); - + if( this.Root != null ) + { + Root.CollectGarbage(); + } } + #endregion #region Internal Methods @@ -908,6 +1005,7 @@ protected virtual void OnClosing( CancelEventArgs args ) Closing( this, args ); } + protected virtual void InternalDock() { } @@ -930,6 +1028,7 @@ protected virtual void InternalDock() /// Hanlde the Hiding event for the LayoutAnchorable to cancel the hide operation. public event EventHandler Closing; - #endregion + +#endregion } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs index 35c173eb1..3496ae6a2 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutRoot.cs @@ -440,6 +440,11 @@ public void CollectGarbage() { content.PreviousContainer = null; } + foreach( var content in this.Descendents().OfType().Where( c => c.InitialContainer != null && + ( c.InitialContainer.Parent == null || c.InitialContainer.Parent.Root != this ) ) ) + { + content.InitialContainer = null; + } //for each pane that is empty foreach( var emptyPane in this.Descendents().OfType().Where( p => p.ChildrenCount == 0 ) ) @@ -462,7 +467,8 @@ public void CollectGarbage() continue; //...if this empty panes is not referenced by anyone, than removes it from its parent container - if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPane ) ) + if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPane ) + && !this.Descendents().OfType().Any( c => c.InitialContainer == emptyPane ) ) { var parentGroup = emptyPane.Parent as ILayoutContainer; parentGroup.RemoveChild( emptyPane ); @@ -493,7 +499,8 @@ public void CollectGarbage() foreach( var emptyPaneGroup in this.Descendents().OfType().Where( p => p.ChildrenCount == 0 ) ) { //...if this empty layout panel is not referenced by anyone, than removes it from its parent container - if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) ) + if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) + && !this.Descendents().OfType().Any( c => c.InitialContainer == emptyPaneGroup ) ) { var parentGroup = emptyPaneGroup.Parent as ILayoutContainer; parentGroup.RemoveChild( emptyPaneGroup ); @@ -509,7 +516,8 @@ public void CollectGarbage() foreach( var emptyPaneGroup in this.Descendents().OfType().Where( p => p.ChildrenCount == 0 ) ) { //...if this empty floating window is not referenced by anyone, than removes it from its parent container - if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) ) + if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) + && !this.Descendents().OfType().Any( c => c.InitialContainer == emptyPaneGroup ) ) { var parentGroup = emptyPaneGroup.Parent as ILayoutContainer; parentGroup.RemoveChild( emptyPaneGroup ); @@ -525,7 +533,8 @@ public void CollectGarbage() foreach( var emptyPaneGroup in this.Descendents().OfType().Where( p => p.ChildrenCount == 0 ) ) { //...if this empty Pane Group is not referenced by anyone, than removes it from its parent container - if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) ) + if( !this.Descendents().OfType().Any( c => c.PreviousContainer == emptyPaneGroup ) + && !this.Descendents().OfType().Any( c => c.InitialContainer == emptyPaneGroup ) ) { var parentGroup = emptyPaneGroup.Parent as ILayoutContainer; parentGroup.RemoveChild( emptyPaneGroup ); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs index 67841f3fb..da0f7b00d 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/Serialization/LayoutSerializer.cs @@ -76,6 +76,15 @@ protected virtual void FixupLayout( LayoutRoot layout ) lcToAttach.PreviousContainer = paneContainerToAttach as ILayoutContainer; } + foreach( var lcToAttach in layout.Descendents().OfType().Where( lc => lc.InitialContainerId != null ) ) + { + var paneContainerToAttach = layout.Descendents().OfType().FirstOrDefault( lps => lps.Id == lcToAttach.InitialContainerId ); + if( paneContainerToAttach == null ) + throw new ArgumentException( string.Format( "Unable to find a pane with id ='{0}'", lcToAttach.InitialContainerId ) ); + + lcToAttach.InitialContainer = paneContainerToAttach as ILayoutContainer; + } + //now fix the content of the layoutcontents foreach( var lcToFix in layout.Descendents().OfType().Where( lc => lc.Content == null ).ToArray() ) diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs index 26308f9e2..128084eed 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.Designer.cs @@ -36,7 +36,7 @@ namespace Xceed.Wpf.AvalonDock.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { @@ -96,7 +96,7 @@ public static string Anchorable_BtnAutoHide_Hint { } /// - /// Looks up a localized string similar to Hide. + /// Looks up a localized string similar to Hide All. /// public static string Anchorable_BtnClose_Hint { get { diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx index bd0c4a5c5..3f2ca77cf 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.cs-CZ.resx @@ -124,7 +124,7 @@ Skrývat automaticky - Skrýt + Schovat vše Pozice okna diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx index b08008444..99758eb71 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.de.resx @@ -124,7 +124,7 @@ Automatisch im Hintergrund - Schließen + Versteck alles Fensterposition diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx index 9b2cf65c5..12b0d3d61 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.es.resx @@ -124,7 +124,7 @@ Esconder Automáticamente - Esconder + Ocultar todo Posición de Ventana diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx index 8acbf3629..a18b2d3ec 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.fr.resx @@ -124,7 +124,7 @@ Cacher Automatiquement - Cacher + Cacher Tout Position de la Fenêtre diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx index 54d0bcae7..4c6bd342a 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.hu.resx @@ -127,7 +127,7 @@ Elrejtés - Elhelyezkedés + Rejtsd el mindet Dokkolás diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx index d72bc67a8..16ed4252a 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.it.resx @@ -124,7 +124,7 @@ Nascondi Automaticamente - Nascondi + Nascondi tutto Posizione della Finestra diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs new file mode 100644 index 000000000..6a519dc11 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.Designer.cs @@ -0,0 +1,17 @@ +/************************************************************************************* + + 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 + + ***********************************************************************************/ + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx new file mode 100644 index 000000000..458ffe64a --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ja-JP.resx @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 自動的に隠す + + + 自動的に隠す + + + すべて非表示 + + + ウィンドウの位置 + + + ドッキング + + + タブ付きドキュメントとしてドッキング + + + フローティング + + + 非表示 + + + ピンステータスを切り替える + + + 閉じる + + + すべて閉じる + + + このウィンドウ以外すべて閉じる + + + ウィンドウの位置 + + + タブ付きドキュメントとしてドッキング + + + フローティング + + + 次のタブグループに移動 + + + 前のタブグループに移動 + + + 新しい水平タブグループ + + + 新しい垂直タブグループ + + + 最大化 + + + 元に戻す + + \ No newline at end of file diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx index 5e2b95aac..75d326a69 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.pt-BR.resx @@ -124,7 +124,7 @@ Esconder Automaticamente - Esconder + Esconda tudo Posição da Janela @@ -177,4 +177,4 @@ Recuperar - + \ No newline at end of file diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx index 67b1d132f..2bd9da785 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.resx @@ -124,7 +124,7 @@ Auto Hide - Hide + Hide All Window Position diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx index db258c181..e2bb72acb 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ro.resx @@ -124,7 +124,7 @@ Ascunde automat - Ascunde + Ascunde tot Poziția ferestrei diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx index 247500ec6..12288ba22 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.ru.resx @@ -124,7 +124,7 @@ Скрывать Автоматически - Скрыть + Скрыть все Положение Окна diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx index cccac7405..8195fabd8 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.sv.resx @@ -124,7 +124,7 @@ Dölj automatiskt - Dölj + Göm alla Fönsterposition diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx index 8e23cb98c..f4d05a2b9 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Properties/Resources.zh-Hans.resx @@ -124,7 +124,7 @@ 自动隐藏 - 隐藏 + 全部藏起来 窗口位置 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml new file mode 100644 index 000000000..f129d47d2 --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Default.xaml @@ -0,0 +1,1438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinAutoHide_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinAutoHide_White.png new file mode 100644 index 0000000000000000000000000000000000000000..2828964b9255c6c447cfff91575dd435ce6e3e14 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMs(j9#r85lP9 zbN@+X1@buyJR*x382Ao@Fyrz36)8YL2TvEr5RKsE1=0yEmkK_}b1d+&NMK>o5ayY& zz=VrIlZjD7oH^mD3kOe;ug1KiVnqfG`Uwvh<}-fzEG*g3$jESf6_04ClI~fcSqz@8 KelF{r5}E*stt}w{ literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinClose_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinClose_White.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7b7cdfd46116eaf27c5cd46ef528f64ea270a8 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMs(j9#r85lP9 zbN@+X1@buyJR*x382Ao@Fyrz36)8Z$08bak5RKroy`EeQ3OvlK|Nr0YJ+muGU{6Q! z%SkOas<{gE6g+*q_LL|bc&v6!cft(r&4#8C>@zEmigiuPm=Udd_rk-HikAwrL?)i= d-JcM~c=uoQrsG%oz5~r>@O1TaS?83{1ON)NKf?e3 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinDocMenu_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinDocMenu_White.png new file mode 100644 index 0000000000000000000000000000000000000000..afd82d9d9d434261f044e9d4bc08f577fb3e02b0 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMs(j9#r85lP9 zbN@+X1@buyJR*x382Ao@Fyrz36)8YLTTd6q5RKqui8~E~Ud;#V6&j2-GPx-*T=Yq} zw}3U}C#S10$Ae28ml>EOW;rm#DsN)j!>~kFVdQ I&MBb@0DQVGR{#J2 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMaximize_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinMaximize_White.png new file mode 100644 index 0000000000000000000000000000000000000000..6f745b4ded9259966aaec740c01ab1b59906a876 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMs(j9#r85lP9 zbN@+X1@buyJR*x382Ao@Fyrz36)8YLdrud~5RKsE1=0yEmw5g+GMqZXDbdK_V%%8y zgvrTF@$}?WVLRV~|BIM&W<@MC@q3*8lTMBOlqlYqw!_LJF!UhIFYZZn6SZ;W#0W^Za)78&qol`;+0P^N3 AL;wH) literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinRestore_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/Generic/Images/PinRestore_White.png new file mode 100644 index 0000000000000000000000000000000000000000..271712270837441a40e18b5bf67c5f1339618d4b GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMs(j9#r85lP9 zbN@+X1@buyJR*x382Ao@Fyrz36)8Z$5KkA!5RKqu1$G0cOp71 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml index dd7c9a3e0..7804e2afb 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Themes/generic.xaml @@ -17,1424 +17,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj index fb7edb647..fbee76a24 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Xceed.Wpf.AvalonDock.csproj @@ -165,6 +165,7 @@ + @@ -204,6 +205,11 @@ Code + + Resources.ja-JP.resx + True + True + Resources.cs-CZ.resx True @@ -272,6 +278,11 @@ + + PublicResXFileCodeGenerator + Resources.ja-JP.Designer.cs + Designer + PublicResXFileCodeGenerator Resources.cs-CZ.Designer.cs @@ -364,6 +375,10 @@ + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -375,6 +390,22 @@ Xceed.Wpf.Toolkit + + + + + + + + + + + + + + + + - + @@ -45,4 +46,9 @@ + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml index 8670444f8..a9029f328 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/BusyIndicator/Resources/Common.xaml @@ -19,7 +19,8 @@ xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"> - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml index c1621760b..5b7617e3d 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Panels/Views/SwitchPanelView.xaml @@ -185,8 +185,8 @@ - @@ -250,8 +250,8 @@ - diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml index fcb6e4475..cf646370a 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Text/Views/MultiLineTextEditorView.xaml @@ -33,7 +33,7 @@ diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml index 84d5f1bb7..904051ec7 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingAvalonDockView.xaml @@ -27,7 +27,7 @@ - Changes the themes of the AvalonDock controls. Available themes are System, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes. + Changes the themes of the AvalonDock controls. Available themes are System, HighContrast, Aero, VS2010, Metro, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.AvalonDock.Themes.xxx.dll assemblies are necessary to use these themes. Some features of this sample are only available in the "Plus" version. diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml index fe4f522a9..4e92526d3 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingDataGridView.xaml @@ -27,7 +27,7 @@ x:Name="_demo"> - Changes the themes of the datagrid control. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes. + Changes the themes of the datagrid control. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.DataGrid.Themes.Office2007.dll or Xceed.Wpf.DataGrid.Themes.Metro.dll assemblies are necessary to use these themes. This feature is only available in the "Plus" version. diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml index 4040456bf..ce93afdac 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingExtendedToolkitView.xaml @@ -25,7 +25,7 @@ x:Name="_demo"> - Changes the themes of the Toolkit for WPF controls. Available themes are System, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes. + Changes the themes of the Toolkit for WPF controls. Available themes are System, HighContrast, Office2007, Windows10 and Metro with accent color. The Xceed.Wpf.Toolkit.Themes.Office2007.dll, Xceed.Wpf.Toolkit.Themes.Windows10.dll or Xceed.Wpf.Toolkit.Themes.Metro.dll assemblies are necessary to use the themes. This feature is only available in the "Plus" version. diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml index 7eb65432d..c90972e0d 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Theming/Views/ThemingListBoxView.xaml @@ -30,7 +30,7 @@ Dress Up Your App in Style in Minutes - Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes. + Supports implicit styles, so the entire listbox can be styled in minutes with a couple of lines of code. Also supports explicit styles and Expression Blend. Available themes are System, HighContrast, Office2007, LiveExplorer, MediaPlayer, Windows10 and Metro with accent color. The Xceed.Wpf.ListBox.Themes.xxx.dll assembly is necessary to use the themes. This feature is only available in the "Plus" version. diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml index 5da119186..ffca2bb8a 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Window/Views/WindowContainerView.xaml @@ -66,7 +66,8 @@ - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml index 8c876de9b..f3832ef82 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit.LiveExplorer/Samples/Zoombox/Views/ZoomboxView.xaml @@ -39,7 +39,7 @@ PvUvTbf{zA^!1G~BQdb=}mi`ImN%W}2PJ+h`%+jr9$fjg#=XMMF(4^HJ-#&&>v zo<{Q)#tvU2$s4A1PyZ`d%ybGQ^^1T literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Duplicate_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Images/Duplicate_White.png new file mode 100644 index 0000000000000000000000000000000000000000..c5eba0be337cc346f7a5c8304927b4c715cd33ba GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!9Y(J#}Etu + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs index 6d9af2f66..6090a9fff 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MaskedTextBox/Implementation/MaskedTextBox.cs @@ -1333,7 +1333,7 @@ protected virtual MaskedTextProvider CreateMaskedTextProvider( provider.IncludeLiterals = true; provider.IncludePrompt = true; - provider.IsPassword = false; + provider.IsPassword = false; return provider; } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Images/Notes16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Images/Notes16.png deleted file mode 100644 index ebfaee36af66ee4d7f6628b7a77c67c812f688ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmV-f0;c_mP)#tDU#AZ0t#XZ6VXBt3&m8L z#3GOqXd$iA|_GqZsyJSW_E_z&LRsR-+S|RzxU0X-HouuOKWX8c6r8e z5Ds~W18atI(7u?tGCV~_Idow}Hn4F7X8(jvTy(Z<%O5$kvmHR4b9;N-JyZ~PE*u2B zynn#5YppedSw-l%pGVK}7QCMR`tEG!?!y3T8RJNivYpdVj!*SH!quTskOGJR$pytQ z4w{>`wB33(GXbC>HbTBzFq4S9d|R^od9GrGJftFAd;Gxo-d)jZ7=rhYO-syUly@_YYwD= zO&iu(m7gnBNGV}7Vn3rgIUPrn#WMOYc0nm% - + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml index 7d87c1947..3cdc4e73c 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/MultiLineTextEditor/Themes/Generic.xaml @@ -28,11 +28,10 @@ - + r#DWU%eKN~Ucs|%W{fdY9Cy}+%f`(;vO_7|OXj(ro9g7Ph3fu1UB{UgFiTZy z9nxpmc7&68=dtO3K5)*jOHw#@&86#5&*Kt9;j|v@^@3{-^_)6kns)d>k+&s-O_Py; UeTLw2pc@!GUHx3vIVCg!03O*+3;+NC literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/ClearFilter16_White.png new file mode 100644 index 0000000000000000000000000000000000000000..df9e5b2d910f85c1aceb9086977c9defa21fb45d GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!CFrj#}EtuwUaOMH7IbnZvFrN`J+v-PA;iy zKL>PvUvTbf{zA^!1G~BQdb=}mi`ImN%W}2PJ+h`%+jr9$fjg#=XMMF(4^HJ-#&&>v zo<{Q)#tvU2$s4A1PyZ`d%ybGQ^^1T literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/SortAscending16_White.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/PropertyGrid/Images/SortAscending16_White.png new file mode 100644 index 0000000000000000000000000000000000000000..a23f2f374f5f0dadf84760c9ab045f1e48633766 GIT binary patch literal 369 zcmV-%0gnEOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0R~A#K~y+Tt&*{^ z!Y~Ym4HJY3U<1PhrlAfEXcmWH16TH6OqcaCw!fNi?NFoBwU%0v){Cs&)i5Ymocu zujc^H?X>LaGP$`G?;NKO)xpa4Q`fkbhd)>p*Zvs10Cx(qd9SXRp{5X7b9SDiT$6E> zrK|WF|KzI errors = Validation.GetErrors( descriptor ); - Validation.MarkInvalid( be, errors[ 0 ] ); + this.Dispatcher.BeginInvoke( DispatcherPriority.Input, new Action( () => + { + var errors = Validation.GetErrors( descriptor ); + Validation.MarkInvalid( be, errors[ 0 ] ); + } + ) ); } } } diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bold_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bold_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb9010d07b50403f581e52cf66b8b39ac278780 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_5>S#}Etuw-*e#7!){I1K$2CU)Pi0(dn$q zy4O`$r1#$O4(GQM+IBcw>9Sh8NH3bD)p5IzeTjNSUG2m?1zx7}1wT^jC*0M4V>w?b ZYtIS^;aM3+JAvjhc)I$ztaD0e0svAKIc@*| literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bullets_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Bullets_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc7f781bf89d01292197da5ce574d33d7a3966b GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_gEW#}Etuzopr0OQ~%iU0rr literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/CenterAlign_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/CenterAlign_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..c505e96ac95f7fcc449be2f9ea0b0288f5232425 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK`l=g#}EtuWQl?UKjb+Ui@G pkzFlWW`_@CNc6NFOkm*QVel!CU{6eJQ~~N@@O1TaS?83{1OO+YCx`$5 literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/FontColorPicker_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/FontColorPicker_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..04459ac2d9f16729224d9780bd30e827df53bc73 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!2(Yg#}Etux99JQHYjkgCge1kWlwR-KEibF zZ1b^x<}Z6Y)XbNhIvcRdY|Xk=ku8kJE8l8dUeNY6IWLRnsX}d&sP99zJ=34Acj9M0 zE$njVOGZqf?~=1jxA~4I7EF)5#L~7_>exp4w=0S#Ys~)??fQiwsLL^V)7kSEfOa!@ My85}Sb4q9e0JeEg{Qv*} literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Italic_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Italic_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..9867d8350eff85c47a534576f229f17d722050c6 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK`&1i#}EtuWQku5f?mn2{~H-jwJ^IWG#GU< zD>yqaoI1+j6EMq+AMwtP*}em4Dubu1pUXO@geCwLMKyB( literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/LeftAlign_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/LeftAlign_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..231dca6ee624681a5e0d76f231c526b4cd85c2f1 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK`l=g#}EtuWQl?U97_L~8E3S!8!$0W@r-rY p!hM19YK(~#+u}q62?l0n2A>NO>;=7lGJv`mJYD@<);T3K0RXkwB^dw! literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Numbering_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/Numbering_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..52ff6792fba32c9d3eb8d65f4bba264beff9935b GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!EjF(#}Etuz5R|{3(i5pGf;aO@q zrO{eyt6@v1-9ZbJGfa6C1aJMD$J?;^--11j*=-)IVO58DPqQeUiq{CfmtgLkbU3W) kvBWgaRt1i0pVeK2Z|<@G;4sUu3upy{r>mdKI;Vst0Fk^r=>Px# literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/RightAlign_White16.png b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/Images/RightAlign_White16.png new file mode 100644 index 0000000000000000000000000000000000000000..02aeaeaea61550329f30f2b283fbf6ab860d7eab GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK}}B=#}EtuWQl?UKjb+UPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0R>4!K~y+T?UFHe zgD?z+1t;(g>KnvkH|SJG-vExllDXWVZ0%^aZq1lZb+%+9H}IHIV>cHI6NsU&d71OQ zrzcy_zbwg)5K9XILMUk4!tZ(*t0TX>Aol($Uf#Y_J0V|xN>Crta?Z%y+Ep~{r?F5x z0OnNEfk8O+LvnZKFXDD@sAp#(GUMbC8Tk;A6;E+lY8qHLG{v1Mh3fu0LFLq@0oS!o;J|iN4F#t*O>LVlPn?18<#2)~??ZhI5-J$W( zo>07qdhaHV8!|MNRjRU#v5T^&%zjs071WYBVb_K;1NI^L|K>Zl0`LoZ8RE$`q_p4w O0000lGS|4mJpKZ0K~H zd4th|nZsdc0)wcNU^AndhOe1~DMLTwhJfRuzYH2o{WfMQN&J7pv`14=dcjQZ6D&MD Z42C-DKOQNZngleM!PC{xWt~$(698e+GnD`U literal 0 HcmV?d00001 diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs index 4ed4fd8d1..1261b0738 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs @@ -174,7 +174,9 @@ private void AttachFormatBarToRichtextBox( global::System.Windows.Controls.RichT void ShowAdorner() { if( _adorner.Visibility == Visibility.Visible ) - return; + { + HideAdorner(); + } VerifyAdornerLayer(); diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml index d730b4c12..f32dda2ad 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Themes/Generic.xaml @@ -21,7 +21,15 @@ - + + + + + + + + + @@ -32,11 +40,11 @@ - + - - + + @@ -57,9 +65,10 @@ - - + + + diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs index 8094559b4..e9c771726 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs @@ -22,11 +22,18 @@ COMMUNITY LICENSE AGREEMENT (for non-commercial use) as published at using System.Windows.Input; using System.Windows.Interop; using Xceed.Wpf.Toolkit.Core; +using System.ComponentModel; namespace Xceed.Wpf.Toolkit { public class Wizard : ItemsControl { + #region Private Members + + private bool? _dialogResult = null; + + #endregion + #region Properties public static readonly DependencyProperty BackButtonContentProperty = DependencyProperty.Register( "BackButtonContent", typeof( object ), typeof( Wizard ), new UIPropertyMetadata( "< Back" ) ); @@ -639,12 +646,33 @@ private void CloseParentWindow( bool dialogResult ) { //we can only set the DialogResult if the window was opened as modal with the ShowDialog() method. Otherwise an exception would occur if( ComponentDispatcher.IsThreadModal ) - window.DialogResult = dialogResult; + { + _dialogResult = dialogResult; + window.Closing += this.Window_Closing; + } window.Close(); } } + private void Window_Closing( object sender, CancelEventArgs e ) + { + var window = sender as Window; + + if( window != null ) + { + if( !e.Cancel ) + { + // Set dialog result only when closing is not canceled. + window.DialogResult = _dialogResult; + } + + _dialogResult = null; + + window.Closing -= this.Window_Closing; + } + } + private bool NextPageExists() { bool exists = false; diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj index fbb5bf842..eff47f1a9 100644 --- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj +++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj @@ -739,9 +739,6 @@ - - - @@ -948,6 +945,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +