Browse Source

Single menu context menus working. (#1808)

pull/1813/head
WojciechKrysiak 8 years ago
committed by Nelson Carrillo
parent
commit
dbe8f748c9
  1. 14
      src/OSX/Avalonia.MonoMac/PopupImpl.cs
  2. 16
      src/OSX/Avalonia.MonoMac/WindowBaseImpl.cs

14
src/OSX/Avalonia.MonoMac/PopupImpl.cs

@ -8,11 +8,23 @@ namespace Avalonia.MonoMac
public PopupImpl() public PopupImpl()
{ {
UpdateStyle(); UpdateStyle();
Window.Level = NSWindowLevel.PopUpMenu;
} }
protected override NSWindowStyle GetStyle() protected override NSWindowStyle GetStyle()
{ {
return NSWindowStyle.Borderless; return NSWindowStyle.Borderless;
} }
protected override CustomWindow CreateCustomWindow() => new CustomPopupWindow(this);
private class CustomPopupWindow : CustomWindow
{
public CustomPopupWindow(WindowBaseImpl impl)
: base(impl)
{ }
public override bool WorksWhenModal() => true;
}
} }
} }

16
src/OSX/Avalonia.MonoMac/WindowBaseImpl.cs

@ -19,14 +19,13 @@ namespace Avalonia.MonoMac
public WindowBaseImpl() public WindowBaseImpl()
{ {
_managedDrag = new ManagedWindowResizeDragHelper(this, _ => { }, ResizeForManagedDrag); _managedDrag = new ManagedWindowResizeDragHelper(this, _ => { }, ResizeForManagedDrag);
Window = new CustomWindow(this) // ReSharper disable once VirtualMemberCallInConstructor
{ Window = CreateCustomWindow();
StyleMask = NSWindowStyle.Titled, Window.StyleMask = NSWindowStyle.Titled;
BackingType = NSBackingStore.Buffered, Window.BackingType = NSBackingStore.Buffered;
ContentView = View, Window.ContentView = View;
// ReSharper disable once VirtualMemberCallInConstructor // ReSharper disable once VirtualMemberCallInConstructor
Delegate = CreateWindowDelegate() Window.Delegate = CreateWindowDelegate();
};
} }
public class CustomWindow : NSWindow public class CustomWindow : NSWindow
@ -57,6 +56,7 @@ namespace Avalonia.MonoMac
public void SetCanBecomeKeyAndMain() => _canBecomeKeyAndMain = true; public void SetCanBecomeKeyAndMain() => _canBecomeKeyAndMain = true;
} }
protected virtual CustomWindow CreateCustomWindow() => new CustomWindow(this);
protected virtual NSWindowDelegate CreateWindowDelegate() => new WindowBaseDelegate(this); protected virtual NSWindowDelegate CreateWindowDelegate() => new WindowBaseDelegate(this);
public class WindowBaseDelegate : NSWindowDelegate public class WindowBaseDelegate : NSWindowDelegate

Loading…
Cancel
Save