diff --git a/src/Perspex.Controls/PlacementMode.cs b/src/Perspex.Controls/PlacementMode.cs index 321f8afa47..ac366a26ec 100644 --- a/src/Perspex.Controls/PlacementMode.cs +++ b/src/Perspex.Controls/PlacementMode.cs @@ -23,11 +23,6 @@ namespace Perspex.Controls /// /// The popup is placed at the top right of its target. /// - Right, - - /// - /// The popup is placed at the center of its target. - /// - Center + Right } -} +} \ No newline at end of file diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs index 2caa129bdc..db3f097f0f 100644 --- a/src/Perspex.Controls/Primitives/Popup.cs +++ b/src/Perspex.Controls/Primitives/Popup.cs @@ -2,13 +2,13 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using System; +using System.Linq; using Perspex.Input; using Perspex.Interactivity; +using Perspex.LogicalTree; using Perspex.Metadata; using Perspex.Rendering; using Perspex.VisualTree; -using Perspex.LogicalTree; -using System.Linq; namespace Perspex.Controls.Primitives { @@ -279,21 +279,13 @@ namespace Perspex.Controls.Primitives { case PlacementMode.Pointer: return MouseDevice.Instance.Position; + case PlacementMode.Bottom: return target?.PointToScreen(new Point(0, target.Bounds.Height)) ?? zero; + case PlacementMode.Right: return target?.PointToScreen(new Point(target.Bounds.Width, 0)) ?? zero; - case PlacementMode.Center: - if ((target == null) || (Child == null)) - { - return zero; - } - else - { - Child.Measure(target.Bounds.Size); - - return target.PointToScreen(new Point((target.Bounds.Width - Child.DesiredSize.Width) / 2, (target.Bounds.Height - Child.DesiredSize.Height) / 2)); - } + default: throw new InvalidOperationException("Invalid value for Popup.PlacementMode"); } @@ -321,4 +313,4 @@ namespace Perspex.Controls.Primitives } } } -} +} \ No newline at end of file