Browse Source

Merge pull request #8249 from AvaloniaUI/fixes/osx-crash-on-main-window-close

prevent segfault when closing app with child windows open.
pull/8250/head
Dan Walmsley 4 years ago
committed by GitHub
parent
commit
e932223c94
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 34
      native/Avalonia.Native/src/OSX/WindowImpl.mm

34
native/Avalonia.Native/src/OSX/WindowImpl.mm

@ -91,11 +91,8 @@ HRESULT WindowImpl::SetParent(IAvnWindow *parent) {
if(_parent != nullptr) if(_parent != nullptr)
{ {
_parent->_children.remove(this); _parent->_children.remove(this);
auto parent = _parent;
dispatch_async(dispatch_get_main_queue(), ^{ _parent->BringToFront();
parent->BringToFront();
});
} }
auto cparent = dynamic_cast<WindowImpl *>(parent); auto cparent = dynamic_cast<WindowImpl *>(parent);
@ -122,20 +119,23 @@ HRESULT WindowImpl::SetParent(IAvnWindow *parent) {
void WindowImpl::BringToFront() void WindowImpl::BringToFront()
{ {
if(IsDialog()) if(Window != nullptr)
{ {
Activate(); if(IsDialog())
} {
else Activate();
{ }
[Window orderFront:nullptr]; else
} {
[Window orderFront:nullptr];
[Window invalidateShadow]; }
for(auto iterator = _children.begin(); iterator != _children.end(); iterator++) [Window invalidateShadow];
{
(*iterator)->BringToFront(); for(auto iterator = _children.begin(); iterator != _children.end(); iterator++)
{
(*iterator)->BringToFront();
}
} }
} }

Loading…
Cancel
Save