Browse Source

Merge pull request #3867 from MarchingCube/osx-dialog-flag

OSX: Mark modal windows
pull/3870/head
danwalmsley 6 years ago
committed by GitHub
parent
commit
5f345d98e8
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      native/Avalonia.Native/src/OSX/window.h
  2. 20
      native/Avalonia.Native/src/OSX/window.mm

2
native/Avalonia.Native/src/OSX/window.h

@ -19,6 +19,8 @@ class WindowBaseImpl;
-(void) pollModalSession: (NSModalSession _Nonnull) session;
-(void) restoreParentWindow;
-(bool) shouldTryToHandleEvents;
-(bool) isModal;
-(void) setModal: (bool) isModal;
-(void) showAppMenuOnly;
-(void) showWindowMenuWithAppMenu;
-(void) applyMenu:(NSMenu* _Nullable)menu;

20
native/Avalonia.Native/src/OSX/window.mm

@ -433,6 +433,9 @@ private:
{
if([Window parentWindow] != nil)
[[Window parentWindow] removeChildWindow:Window];
[Window setModal:FALSE];
WindowBaseImpl::Show();
return SetWindowState(_lastWindowState);
@ -450,6 +453,8 @@ private:
if(cparent == nullptr)
return E_INVALIDARG;
[Window setModal:TRUE];
[cparent->Window addChildWindow:Window ordered:NSWindowAbove];
WindowBaseImpl::Show();
@ -1144,6 +1149,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
ComPtr<WindowBaseImpl> _parent;
bool _canBecomeKeyAndMain;
bool _closed;
bool _isModal;
AvnMenu* _menu;
double _lastScaling;
}
@ -1322,11 +1328,25 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
auto ch = objc_cast<AvnWindow>(uch);
if(ch == nil)
continue;
if(![ch isModal])
continue;
return FALSE;
}
return TRUE;
}
-(bool) isModal
{
return _isModal;
}
-(void) setModal: (bool) isModal
{
_isModal = isModal;
}
-(void)makeKeyWindow
{
if([self activateAppropriateChild: true])

Loading…
Cancel
Save