X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a350a4884134b13ec47a7c5c18f473f878e7cbc4..edd802c67c82f95d773635a813645287a47594e4:/src/common/dlgcmn.cpp diff --git a/src/common/dlgcmn.cpp b/src/common/dlgcmn.cpp index 3688684b37..d874e1a2fe 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 @@ -136,21 +142,15 @@ wxSizer *wxDialogBase::CreateButtonSizer( long flags ) wxButton *yes = (wxButton *) NULL; wxButton *no = (wxButton *) NULL; - // always show an OK button, unless only YES_NO is given - if ((flags & wxYES_NO) == 0) flags = flags | wxOK; + // always show an OK button, unless we have both YES and NO + if ( (flags & wxYES_NO) != wxYES_NO ) + flags |= wxOK; - if (flags & wxYES_NO) - { - yes = new wxButton( this, wxID_YES, _("Yes"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); - box->Add( yes, 0, wxLEFT|wxRIGHT, margin ); - no = new wxButton( this, wxID_NO, _("No") ,wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS); - box->Add( no, 0, wxLEFT|wxRIGHT, margin ); - } else if (flags & wxYES) { yes = new wxButton( this, wxID_YES, _("Yes"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); box->Add( yes, 0, wxLEFT|wxRIGHT, margin ); - } else + } if (flags & wxNO) { no = new wxButton( this, wxID_NO, _("No"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); @@ -184,6 +184,7 @@ wxSizer *wxDialogBase::CreateButtonSizer( long flags ) box->Add( cancel, 0, wxLEFT|wxRIGHT, margin ); } + // choose the default button if (flags & wxNO_DEFAULT) { if (no)