X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2439f1d96880ed2fd1551b85795ccee1704dc29c..66506259a04a70a22db44dd6adee0f8aad36fab5:/src/osx/carbon/evtloop.cpp diff --git a/src/osx/carbon/evtloop.cpp b/src/osx/carbon/evtloop.cpp index 68695943bb..4ca136ca90 100644 --- a/src/osx/carbon/evtloop.cpp +++ b/src/osx/carbon/evtloop.cpp @@ -94,37 +94,51 @@ void wxGUIEventLoop::DoStop() QuitApplicationEventLoop(); } -wxModalEventLoop::wxModalEventLoop(wxWindow *winModal) +// TODO move into a evtloop_osx.cpp + +wxModalEventLoop::wxModalEventLoop(wxWindow *modalWindow) { - m_modalWindow = dynamic_cast (winModal); + m_modalWindow = dynamic_cast (modalWindow); wxASSERT_MSG( m_modalWindow != NULL, "must pass in a toplevel window for modal event loop" ); + m_modalNativeWindow = m_modalWindow->GetWXWindow(); } +wxModalEventLoop::wxModalEventLoop(WXWindow modalNativeWindow) +{ + m_modalWindow = NULL; + wxASSERT_MSG( modalNativeWindow != NULL, "must pass in a toplevel window for modal event loop" ); + m_modalNativeWindow = modalNativeWindow; +} + +// END move into a evtloop_osx.cpp + void wxModalEventLoop::DoRun() { wxMacAutoreleasePool autoreleasepool; - WindowRef windowRef = m_modalWindow->GetWXWindow(); + + bool resetGroupParent = false; WindowGroupRef windowGroup = NULL; WindowGroupRef formerParentGroup = NULL; - bool resetGroupParent = false; // make sure modal dialogs are in the right layer so that they are not covered - - if ( m_modalWindow->GetParent() == NULL ) + if ( m_modalWindow != NULL ) { - windowGroup = GetWindowGroup(windowRef) ; - if ( windowGroup != GetWindowGroupOfClass( kMovableModalWindowClass ) ) + if ( m_modalWindow->GetParent() == NULL ) { - formerParentGroup = GetWindowGroupParent( windowGroup ); - SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) ); - resetGroupParent = true; + windowGroup = GetWindowGroup(m_modalNativeWindow) ; + if ( windowGroup != GetWindowGroupOfClass( kMovableModalWindowClass ) ) + { + formerParentGroup = GetWindowGroupParent( windowGroup ); + SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) ); + resetGroupParent = true; + } } } m_modalWindow->SetFocus(); - RunAppModalLoopForWindow(windowRef); + RunAppModalLoopForWindow(m_modalNativeWindow); if ( resetGroupParent ) { @@ -136,8 +150,7 @@ void wxModalEventLoop::DoRun() void wxModalEventLoop::DoStop() { wxMacAutoreleasePool autoreleasepool; - WindowRef theWindow = m_modalWindow->GetWXWindow(); - QuitAppModalLoopForWindow(theWindow); + QuitAppModalLoopForWindow(m_modalNativeWindow); }