X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cde9f08e1f2bba81294708c1d65bb869ed744e56..cd743a6f71653cc0cfa5c0377aae26c906650620:/src/msw/dialog.cpp?ds=sidebyside diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index af8ad17747..9f5bbaa74b 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -361,6 +361,10 @@ bool wxDialog::Show(bool show) TranslateMessage(&msg); DispatchMessage(&msg); } + + // If we get crashes (as per George Tasker's message) with nested modal dialogs, + // we should try removing the m_modalShowing test + if (m_modalShowing && !::PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) // dfgg: NB MUST test m_modalShowing again as the message loop could have triggered // a Show(FALSE) in the mean time!!! @@ -376,9 +380,12 @@ bool wxDialog::Show(bool show) node=disabledWindows.First(); while(node) { wxWindow* win = (wxWindow*) node->Data(); - HWND hWnd = (HWND) win->GetHWND(); - if (::IsWindow(hWnd) && (wxModalDialogs.Member(win) || wxModelessWindows.Member(win) )) - ::EnableWindow(hWnd,TRUE); + if (wxModalDialogs.Member(win) || wxModelessWindows.Member(win)) + { + HWND hWnd = (HWND) win->GetHWND(); + if (::IsWindow(hWnd)) + ::EnableWindow(hWnd,TRUE); + } node=node->Next(); } } @@ -506,7 +513,7 @@ void wxDialog::EndModal(int retCode) WXHBRUSH wxDialog::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { -#if CTL3D +#if wxUSE_CTL3D HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); return (WXHBRUSH) hbrush; #else @@ -582,7 +589,7 @@ void wxDialog::OnSize(wxSizeEvent& WXUNUSED(event)) void wxDialog::OnCloseWindow(wxCloseEvent& event) { // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) + if ( GetEventHandler()->OnClose() || !event.CanVeto()) { this->Destroy(); } @@ -600,7 +607,7 @@ bool wxDialog::Destroy(void) void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) { -#if CTL3D +#if wxUSE_CTL3D Ctl3dColorChange(); #else SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));