- // disable all other app windows
- wxASSERT_MSG( !m_windowDisabler, _T("disabling windows twice?") );
-
- m_windowDisabler = new wxWindowDisabler(this);
-
- // before entering the modal loop, reset the "is in OnIdle()" flag (see
- // comment in app.cpp)
- extern bool wxIsInOnIdleFlag;
- bool wasInOnIdle = wxIsInOnIdleFlag;
- wxIsInOnIdleFlag = FALSE;
-
- // enter the modal loop
- wxEventLoop evtLoop;
- evtLoop.Run();
-
- wxIsInOnIdleFlag = wasInOnIdle;
-
- // and restore focus
- // Note that this code MUST NOT access the dialog object's data
- // in case the object has been deleted (which will be the case
- // for a modal dialog that has been destroyed before calling EndModal).
- if ( oldFocus && (oldFocus != this) && ::IsWindow(hwndOldFocus))