Browse Source

Removed 'distance' argument to LayoutManager.

No longer needed.
pull/387/merge
Steven Kirk 11 years ago
parent
commit
b310ead6a1
  1. 6
      src/Perspex.Layout/ILayoutManager.cs
  2. 6
      src/Perspex.Layout/LayoutManager.cs
  3. 24
      src/Perspex.Layout/Layoutable.cs

6
src/Perspex.Layout/ILayoutManager.cs

@ -53,14 +53,12 @@ namespace Perspex.Layout
/// Notifies the layout manager that a control requires a measure. /// Notifies the layout manager that a control requires a measure.
/// </summary> /// </summary>
/// <param name="control">The control.</param> /// <param name="control">The control.</param>
/// <param name="distance">The control's distance from the layout root.</param> void InvalidateMeasure(ILayoutable control);
void InvalidateMeasure(ILayoutable control, int distance);
/// <summary> /// <summary>
/// Notifies the layout manager that a control requires an arrange. /// Notifies the layout manager that a control requires an arrange.
/// </summary> /// </summary>
/// <param name="control">The control.</param> /// <param name="control">The control.</param>
/// <param name="distance">The control's distance from the layout root.</param> void InvalidateArrange(ILayoutable control);
void InvalidateArrange(ILayoutable control, int distance);
} }
} }

6
src/Perspex.Layout/LayoutManager.cs

@ -77,8 +77,7 @@ namespace Perspex.Layout
/// Notifies the layout manager that a control requires a measure. /// Notifies the layout manager that a control requires a measure.
/// </summary> /// </summary>
/// <param name="control">The control.</param> /// <param name="control">The control.</param>
/// <param name="distance">The control's distance from the layout root.</param> public void InvalidateMeasure(ILayoutable control)
public void InvalidateMeasure(ILayoutable control, int distance)
{ {
Contract.Requires<ArgumentNullException>(control != null); Contract.Requires<ArgumentNullException>(control != null);
Dispatcher.UIThread.VerifyAccess(); Dispatcher.UIThread.VerifyAccess();
@ -92,8 +91,7 @@ namespace Perspex.Layout
/// Notifies the layout manager that a control requires an arrange. /// Notifies the layout manager that a control requires an arrange.
/// </summary> /// </summary>
/// <param name="control">The control.</param> /// <param name="control">The control.</param>
/// <param name="distance">The control's distance from the layout root.</param> public void InvalidateArrange(ILayoutable control)
public void InvalidateArrange(ILayoutable control, int distance)
{ {
Contract.Requires<ArgumentNullException>(control != null); Contract.Requires<ArgumentNullException>(control != null);
Dispatcher.UIThread.VerifyAccess(); Dispatcher.UIThread.VerifyAccess();

24
src/Perspex.Layout/Layoutable.cs

@ -396,7 +396,7 @@ namespace Perspex.Layout
IsArrangeValid = false; IsArrangeValid = false;
var root = GetLayoutRoot(); var root = GetLayoutRoot();
root?.Item1.LayoutManager?.InvalidateMeasure(this, root.Item2); root?.LayoutManager?.InvalidateMeasure(this);
} }
} }
@ -412,7 +412,7 @@ namespace Perspex.Layout
IsArrangeValid = false; IsArrangeValid = false;
var root = GetLayoutRoot(); var root = GetLayoutRoot();
root?.Item1.LayoutManager?.InvalidateArrange(this, root.Item2); root?.LayoutManager?.InvalidateArrange(this);
} }
} }
@ -675,23 +675,13 @@ namespace Perspex.Layout
} }
/// <summary> /// <summary>
/// Gets the layout root, together with its distance. /// Gets the layout root.
/// </summary> /// </summary>
/// <returns> private ILayoutRoot GetLayoutRoot()
/// A tuple containing the layout root and the root's distance from this control.
/// </returns>
private Tuple<ILayoutRoot, int> GetLayoutRoot()
{ {
var control = (IVisual)this; return this.GetSelfAndVisualAncestors()
var distance = 0; .OfType<ILayoutRoot>()
.FirstOrDefault();
while (control != null && !(control is ILayoutRoot))
{
control = control.GetVisualParent();
++distance;
}
return control != null ? Tuple.Create((ILayoutRoot)control, distance) : null;
} }
} }
} }

Loading…
Cancel
Save