From 643fe6675e2ee7735cc106b4b63f83faf2680676 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 2 Jun 2022 18:39:16 +0100 Subject: [PATCH] prevent segfault when closing app with child windows open. --- native/Avalonia.Native/src/OSX/WindowImpl.mm | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/WindowImpl.mm b/native/Avalonia.Native/src/OSX/WindowImpl.mm index 3c2224876a..e6e704e149 100644 --- a/native/Avalonia.Native/src/OSX/WindowImpl.mm +++ b/native/Avalonia.Native/src/OSX/WindowImpl.mm @@ -91,11 +91,8 @@ HRESULT WindowImpl::SetParent(IAvnWindow *parent) { if(_parent != nullptr) { _parent->_children.remove(this); - auto parent = _parent; - dispatch_async(dispatch_get_main_queue(), ^{ - parent->BringToFront(); - }); + _parent->BringToFront(); } auto cparent = dynamic_cast(parent); @@ -122,20 +119,23 @@ HRESULT WindowImpl::SetParent(IAvnWindow *parent) { void WindowImpl::BringToFront() { - if(IsDialog()) + if(Window != nullptr) { - Activate(); - } - else - { - [Window orderFront:nullptr]; - } - - [Window invalidateShadow]; - - for(auto iterator = _children.begin(); iterator != _children.end(); iterator++) - { - (*iterator)->BringToFront(); + if(IsDialog()) + { + Activate(); + } + else + { + [Window orderFront:nullptr]; + } + + [Window invalidateShadow]; + + for(auto iterator = _children.begin(); iterator != _children.end(); iterator++) + { + (*iterator)->BringToFront(); + } } }