window in "pending for delete" queue before the call to this function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1115
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
{
m_hwndOldFocus = (WXHWND)::GetFocus();
{
m_hwndOldFocus = (WXHWND)::GetFocus();
- wxList DisabledWindows;
if (m_modalShowing)
{
BringWindowToTop((HWND) GetHWND());
if (m_modalShowing)
{
BringWindowToTop((HWND) GetHWND());
::EnableWindow((HWND) box->GetHWND(), FALSE);
node = node->Next();
}
::EnableWindow((HWND) box->GetHWND(), FALSE);
node = node->Next();
}
+
+ // if we don't do it, some window might be deleted while we have pointers
+ // to them in our disabledWindows list and the program will crash when it
+ // will try to reenable them after the modal dialog end
+ wxTheApp->DeletePendingObjects();
+ wxList disabledWindows;
+
node = wxModelessWindows.First();
while (node)
{
node = wxModelessWindows.First();
while (node)
{
if (::IsWindowEnabled((HWND) win->GetHWND()))
{
::EnableWindow((HWND) win->GetHWND(), FALSE);
if (::IsWindowEnabled((HWND) win->GetHWND()))
{
::EnableWindow((HWND) win->GetHWND(), FALSE);
- DisabledWindows.Append(win);
+ disabledWindows.Append(win);
}
}
// dfgg: now must specifically re-enable all other app windows that we disabled earlier
}
}
// dfgg: now must specifically re-enable all other app windows that we disabled earlier
- node=DisabledWindows.First();
+ node=disabledWindows.First();
while(node) {
wxWindow* win = (wxWindow*) node->Data();
HWND hWnd = (HWND) win->GetHWND();
while(node) {
wxWindow* win = (wxWindow*) node->Data();
HWND hWnd = (HWND) win->GetHWND();