fix(dock): prevent render-feedback loop and improve drag state cleanup
This commit is contained in:
@@ -61,6 +61,7 @@ public sealed partial class DockLayout
|
|||||||
|
|
||||||
private void ClearDragOperationState()
|
private void ClearDragOperationState()
|
||||||
{
|
{
|
||||||
|
_lastTargetElement = null;
|
||||||
ClearOverlayState();
|
ClearOverlayState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ public sealed partial class DockLayout
|
|||||||
if (node is DockGroupNode groupNode)
|
if (node is DockGroupNode groupNode)
|
||||||
{
|
{
|
||||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged += OnChildrenCollectionChanged;
|
((INotifyCollectionChanged)groupNode.Children).CollectionChanged += OnChildrenCollectionChanged;
|
||||||
groupNode.Sizes.CollectionChanged += OnSizesCollectionChanged;
|
|
||||||
foreach (var child in groupNode.Children)
|
foreach (var child in groupNode.Children)
|
||||||
{
|
{
|
||||||
SubscribeToNode(child);
|
SubscribeToNode(child);
|
||||||
@@ -39,7 +38,6 @@ public sealed partial class DockLayout
|
|||||||
if (node is DockGroupNode groupNode)
|
if (node is DockGroupNode groupNode)
|
||||||
{
|
{
|
||||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
||||||
groupNode.Sizes.CollectionChanged -= OnSizesCollectionChanged;
|
|
||||||
foreach (var child in groupNode.Children)
|
foreach (var child in groupNode.Children)
|
||||||
{
|
{
|
||||||
UnsubscribeFromNode(child);
|
UnsubscribeFromNode(child);
|
||||||
@@ -57,17 +55,11 @@ public sealed partial class DockLayout
|
|||||||
if (node is DockGroupNode groupNode)
|
if (node is DockGroupNode groupNode)
|
||||||
{
|
{
|
||||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
||||||
groupNode.Sizes.CollectionChanged -= OnSizesCollectionChanged;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_subscribedNodes.Clear();
|
_subscribedNodes.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnSizesCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
|
|
||||||
{
|
|
||||||
RenderTree();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnNodePropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
private void OnNodePropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
// Filter to structural property names
|
// Filter to structural property names
|
||||||
|
|||||||
Reference in New Issue
Block a user