From 4be7f29aa78cfbef2c3cdf9ace99b0bab93ebcf3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 20 May 2012 20:29:29 +0000 Subject: [PATCH] Reset wxDialog::m_modality sooner in wxOSX. Change the internal flag to wxDIALOG_MODALITY_NONE before sending wxEVT_WINDOW_MODAL_DIALOG_CLOSED event. This ensures that if the dialog is shown again from this event handler it works correctly. Closes #13951. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/dialog_osx.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/osx/dialog_osx.cpp b/src/osx/dialog_osx.cpp index 835afaaa24..da2c32afec 100644 --- a/src/osx/dialog_osx.cpp +++ b/src/osx/dialog_osx.cpp @@ -115,7 +115,12 @@ bool wxDialog::Show(bool show) if ( !show ) { - switch( m_modality ) + const int modalityOrig = m_modality; + + // complete the 'hiding' before we send the event + m_modality = wxDIALOG_MODALITY_NONE; + + switch ( modalityOrig ) { case wxDIALOG_MODALITY_WINDOW_MODAL: EndWindowModal(); // OS X implementation method for cleanup @@ -124,7 +129,6 @@ bool wxDialog::Show(bool show) default: break; } - m_modality = wxDIALOG_MODALITY_NONE; } return true; -- 2.45.2