Browse Source

AvalonDock fixed tabs undocking when changing tabs to a different sized tab, related to AutoSize setting.

pull/1171/head
John Stewien 9 years ago
parent
commit
7488d6d367
  1. 26
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs
  2. 1
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs

26
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorableTabItem.cs

@ -116,8 +116,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
#endregion
bool _isMouseDown = false;
static LayoutAnchorableTabItem _draggingItem = null;
private bool _isMouseDown = false;
private static LayoutAnchorableTabItem _draggingItem = null;
// There's an issue with panes resizing when selecting another tab, causing a
// mouse leave event to make the tab undock. This fixes that.
private static bool _cancelNextMouseLeave = false;
internal static bool IsDraggingItem()
{
@ -132,6 +135,10 @@ namespace Xceed.Wpf.AvalonDock.Controls
{
_draggingItem = null;
}
internal static void CancelNextMouseLeave()
{
_cancelNextMouseLeave = true;
}
protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e)
{
@ -150,6 +157,11 @@ namespace Xceed.Wpf.AvalonDock.Controls
_isMouseDown = false;
_draggingItem = null;
}
else
{
_cancelNextMouseLeave = false;
}
}
protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e)
@ -167,10 +179,18 @@ namespace Xceed.Wpf.AvalonDock.Controls
if (_isMouseDown && e.LeftButton == MouseButtonState.Pressed)
{
_draggingItem = this;
if (!_cancelNextMouseLeave)
{
_draggingItem = this;
}
else
{
_draggingItem = null;
}
}
_isMouseDown = false;
_cancelNextMouseLeave = false;
}
protected override void OnMouseEnter(MouseEventArgs e)

1
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutContent.cs

@ -127,6 +127,7 @@ namespace Xceed.Wpf.AvalonDock.Layout
parentSelector.SelectedContentIndex = _isSelected ? parentSelector.IndexOf(this) : -1;
OnIsSelectedChanged(oldValue, value);
RaisePropertyChanged("IsSelected");
Controls.LayoutAnchorableTabItem.CancelNextMouseLeave();
}
}
}

Loading…
Cancel
Save