X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7d9f12f3b9f997b6308faf336d5381be591b71f4..7f1698c34c3d4241bb96a6a40d02bd25df6db594:/src/common/dlgcmn.cpp diff --git a/src/common/dlgcmn.cpp b/src/common/dlgcmn.cpp index 8895538665..04ad2b6756 100644 --- a/src/common/dlgcmn.cpp +++ b/src/common/dlgcmn.cpp @@ -57,6 +57,12 @@ WX_DELEGATE_TO_CONTROL_CONTAINER(wxDialogBase) void wxDialogBase::Init() { m_returnCode = 0; + + // the dialogs have this flag on by default to prevent the events from the + // dialog controls from reaching the parent frame which is usually + // undesirable and can lead to unexpected and hard to find bugs + SetExtraStyle(GetExtraStyle() | wxWS_EX_BLOCK_EVENTS); + #ifdef wxTopLevelWindowNative // FIXME - temporary hack, should be always used! m_container.SetContainerWindow(this); #endif @@ -64,7 +70,7 @@ void wxDialogBase::Init() #if wxUSE_STATTEXT && wxUSE_TEXTCTRL -wxSizer *wxDialogBase::CreateTextSizer( const wxString &message ) +wxSizer *wxDialogBase::CreateTextSizer( const wxString& message ) { wxBoxSizer *box = new wxBoxSizer( wxVERTICAL ); @@ -76,24 +82,34 @@ wxSizer *wxDialogBase::CreateTextSizer( const wxString &message ) GetTextExtent(_T("H"), (int*)NULL, &y, (int*)NULL, (int*)NULL, &font); wxString line; - for (size_t pos = 0; pos < message.Len(); pos++) + for ( size_t pos = 0; pos < message.length(); pos++ ) { - if (message[pos] == wxT('\n')) - { - if (!line.IsEmpty()) - { - wxStaticText *s1 = new wxStaticText( this, -1, line ); - box->Add( s1 ); - line = wxT(""); - } - else - { - box->Add( 5, y ); - } - } - else + switch ( message[pos] ) { - line += message[pos]; + case _T('\n'): + if (!line.IsEmpty()) + { + wxStaticText *s1 = new wxStaticText( this, -1, line ); + box->Add( s1 ); + line = wxT(""); + } + else + { + box->Add( 5, y ); + } + break; + + case _T('&'): + // this is used as accel mnemonic prefix in the wxWindows + // controls but in the static messages created by + // CreateTextSizer() (used by wxMessageBox, for example), we + // don't want this special meaning, so we need to quote it + line += _T('&'); + + // fall through to add it normally too + + default: + line += message[pos]; } }