|
|
@ -14,7 +14,7 @@ namespace Avalonia.Rendering |
|
|
|
|
|
|
|
|
public void Add(IVisual visual) |
|
|
public void Add(IVisual visual) |
|
|
{ |
|
|
{ |
|
|
var distance = visual.CalculateDistanceFromVisualRoot(); |
|
|
var distance = visual.IsAttachedToVisualTree ? visual.CalculateDistanceFromVisualRoot() : -1; |
|
|
int existingDistance; |
|
|
int existingDistance; |
|
|
|
|
|
|
|
|
if (_index.TryGetValue(visual, out existingDistance)) |
|
|
if (_index.TryGetValue(visual, out existingDistance)) |
|
|
@ -46,6 +46,20 @@ namespace Avalonia.Rendering |
|
|
_index.Clear(); |
|
|
_index.Clear(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public bool Remove(IVisual visual) |
|
|
|
|
|
{ |
|
|
|
|
|
int distance; |
|
|
|
|
|
|
|
|
|
|
|
if (_index.TryGetValue(visual, out distance)) |
|
|
|
|
|
{ |
|
|
|
|
|
_inner[distance].Remove(visual); |
|
|
|
|
|
_index.Remove(visual); |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public IEnumerator<IVisual> GetEnumerator() |
|
|
public IEnumerator<IVisual> GetEnumerator() |
|
|
{ |
|
|
{ |
|
|
foreach (var i in _inner) |
|
|
foreach (var i in _inner) |
|
|
|