support for native tlw parents, see #14252
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -517,6 +517,12 @@ wxNonOwnedWindowCocoaImpl::~wxNonOwnedWindowCocoaImpl()
|
|||||||
if ( !m_wxPeer->IsNativeWindowWrapper() )
|
if ( !m_wxPeer->IsNativeWindowWrapper() )
|
||||||
{
|
{
|
||||||
[m_macWindow setDelegate:nil];
|
[m_macWindow setDelegate:nil];
|
||||||
|
|
||||||
|
// make sure we remove this first, otherwise the ref count will not lead to the
|
||||||
|
// native window's destruction
|
||||||
|
if ([m_macWindow parentWindow] != 0)
|
||||||
|
[[m_macWindow parentWindow] removeChildWindow: m_macWindow];
|
||||||
|
|
||||||
[m_macWindow release];
|
[m_macWindow release];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -679,14 +685,34 @@ bool wxNonOwnedWindowCocoaImpl::Show(bool show)
|
|||||||
if ( show )
|
if ( show )
|
||||||
{
|
{
|
||||||
wxNonOwnedWindow* wxpeer = GetWXPeer();
|
wxNonOwnedWindow* wxpeer = GetWXPeer();
|
||||||
if (wxpeer && !(wxpeer->GetWindowStyle() & wxFRAME_TOOL_WINDOW))
|
if ( wxpeer )
|
||||||
[m_macWindow makeKeyAndOrderFront:nil];
|
{
|
||||||
else
|
// add to parent window before showing
|
||||||
[m_macWindow orderFront:nil];
|
if ( wxpeer->GetParent() )
|
||||||
|
{
|
||||||
|
NSView * parentView = wxpeer->GetParent()->GetPeer()->GetWXWidget();
|
||||||
|
if ( parentView )
|
||||||
|
{
|
||||||
|
NSWindow* parentNSWindow = [parentView window];
|
||||||
|
if ( parentNSWindow )
|
||||||
|
[parentNSWindow addChildWindow:m_macWindow ordered:NSWindowAbove];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(wxpeer->GetWindowStyle() & wxFRAME_TOOL_WINDOW))
|
||||||
|
[m_macWindow makeKeyAndOrderFront:nil];
|
||||||
|
else
|
||||||
|
[m_macWindow orderFront:nil];
|
||||||
|
}
|
||||||
[[m_macWindow contentView] setNeedsDisplay: YES];
|
[[m_macWindow contentView] setNeedsDisplay: YES];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
// avoid propagation of orderOut to parent
|
||||||
|
if ([m_macWindow parentWindow] != 0)
|
||||||
|
[[m_macWindow parentWindow] removeChildWindow: m_macWindow];
|
||||||
[m_macWindow orderOut:nil];
|
[m_macWindow orderOut:nil];
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user