- if (wxpeer && !(wxpeer->GetWindowStyle() & wxFRAME_TOOL_WINDOW))
- [m_macWindow makeKeyAndOrderFront:nil];
- else
- [m_macWindow orderFront:nil];
+ if ( wxpeer )
+ {
+ // add to parent window before showing
+ wxDialog * const dialog = wxDynamicCast(wxpeer, wxDialog);
+ if ( wxpeer->GetParent() && dialog && dialog->IsModal())
+ {
+ 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];
+ }