From a9a980a71b4bc3961a5310f983a9cca2b12b21d8 Mon Sep 17 00:00:00 2001 From: Lauri Nurmi Date: Fri, 10 Feb 2017 13:44:23 +0200 Subject: [PATCH] Set proper level for modal dialogs of float-on-parent frames on wxOSX This prevents the dialog from getting hidden behind its parent after task switching the application into background and back to front. Related to #4355, but not a fix. --- src/osx/cocoa/nonownedwnd.mm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index bba75c0afc..6f12bed1ad 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -812,8 +812,16 @@ bool wxNonOwnedWindowCocoaImpl::Show(bool show) if ( parentView ) { NSWindow* parentNSWindow = [parentView window]; - if ( parentNSWindow ) + if ( parentNSWindow ) { [parentNSWindow addChildWindow:m_macWindow ordered:NSWindowAbove]; + // If the parent is modal, windows with wxFRAME_FLOAT_ON_PARENT style need + // to be in kCGUtilityWindowLevel and not kCGFloatingWindowLevel to stay + // above the parent. + if ([m_macWindow level] == kCGFloatingWindowLevel) { + m_macWindowLevel = kCGUtilityWindowLevel; + [m_macWindow setLevel:m_macWindowLevel]; + } + } } }