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()
|
||||
{
|
||||
_lastTargetElement = null;
|
||||
ClearOverlayState();
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ public sealed partial class DockLayout
|
||||
if (node is DockGroupNode groupNode)
|
||||
{
|
||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged += OnChildrenCollectionChanged;
|
||||
groupNode.Sizes.CollectionChanged += OnSizesCollectionChanged;
|
||||
foreach (var child in groupNode.Children)
|
||||
{
|
||||
SubscribeToNode(child);
|
||||
@@ -39,7 +38,6 @@ public sealed partial class DockLayout
|
||||
if (node is DockGroupNode groupNode)
|
||||
{
|
||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
||||
groupNode.Sizes.CollectionChanged -= OnSizesCollectionChanged;
|
||||
foreach (var child in groupNode.Children)
|
||||
{
|
||||
UnsubscribeFromNode(child);
|
||||
@@ -57,17 +55,11 @@ public sealed partial class DockLayout
|
||||
if (node is DockGroupNode groupNode)
|
||||
{
|
||||
((INotifyCollectionChanged)groupNode.Children).CollectionChanged -= OnChildrenCollectionChanged;
|
||||
groupNode.Sizes.CollectionChanged -= OnSizesCollectionChanged;
|
||||
}
|
||||
}
|
||||
_subscribedNodes.Clear();
|
||||
}
|
||||
|
||||
private void OnSizesCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
RenderTree();
|
||||
}
|
||||
|
||||
private void OnNodePropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
// Filter to structural property names
|
||||
|
||||
Reference in New Issue
Block a user