Browse Source

fixed popup, and context menu.

pull/405/head
danwalmsley 11 years ago
parent
commit
d043e4b67a
  1. 5
      src/Perspex.Controls/ContextMenu.cs
  2. 9
      src/Perspex.Controls/Primitives/Popup.cs

5
src/Perspex.Controls/ContextMenu.cs

@ -89,12 +89,13 @@
_popup = new Popup()
{
PlacementTarget = control,
Child = new ContentControl(),
StaysOpen = false
};
}
((ISetLogicalParent)_popup).SetParent(control);
_popup.Child = control.ContextMenu;
_popup.Open();
control.ContextMenu._isOpen = true;

9
src/Perspex.Controls/Primitives/Popup.cs

@ -172,13 +172,16 @@ namespace Perspex.Controls.Primitives
_popupRoot.Position = GetPosition();
if (_topLevel == null)
if (_topLevel == null && PlacementTarget != null)
{
_topLevel = PlacementTarget.GetSelfAndLogicalAncestors().First(x => x is TopLevel) as TopLevel;
}
_topLevel.Deactivated += TopLevelDeactivated;
_topLevel.AddHandler(PointerPressedEvent, PointerPressedOutside, RoutingStrategies.Tunnel);
if (_topLevel != null)
{
_topLevel.Deactivated += TopLevelDeactivated;
_topLevel.AddHandler(PointerPressedEvent, PointerPressedOutside, RoutingStrategies.Tunnel);
}
PopupRootCreated?.Invoke(this, EventArgs.Empty);

Loading…
Cancel
Save