diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 1c020573f5..335cc16ca2 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -1769,10 +1769,15 @@ void MyFrame::OnStandardButtonsSizerDialog(wxCommandEvent& WXUNUSED(event)) #define ID_CATCH_LISTBOX_DCLICK 100 #define ID_LISTBOX 101 +#define ID_DISABLE_OK 102 +#define ID_DISABLE_CANCEL 103 BEGIN_EVENT_TABLE(TestDefaultActionDialog, wxDialog) EVT_CHECKBOX(ID_CATCH_LISTBOX_DCLICK, TestDefaultActionDialog::OnCatchListBoxDClick) + EVT_CHECKBOX(ID_DISABLE_OK, TestDefaultActionDialog::OnDisableOK) + EVT_CHECKBOX(ID_DISABLE_CANCEL, TestDefaultActionDialog::OnDisableCancel) EVT_LISTBOX_DCLICK(ID_LISTBOX, TestDefaultActionDialog::OnListBoxDClick) + EVT_TEXT_ENTER(wxID_ANY, TestDefaultActionDialog::OnTextEnter) END_EVENT_TABLE() TestDefaultActionDialog::TestDefaultActionDialog( wxWindow *parent ) : @@ -1801,6 +1806,9 @@ TestDefaultActionDialog::TestDefaultActionDialog( wxWindow *parent ) : grid_sizer->Add( new wxTextCtrl( this, -1, "", wxDefaultPosition, wxSize(80,-1), wxTE_PROCESS_ENTER ), 0, wxALIGN_CENTRE_VERTICAL ); grid_sizer->Add( new wxStaticText( this, -1, "wxTextCtrl with wxTE_PROCESS_ENTER" ), 0, wxALIGN_CENTRE_VERTICAL ); + grid_sizer->Add( new wxCheckBox(this, ID_DISABLE_OK, "Disable \"OK\""), 0, wxALIGN_CENTRE_VERTICAL ); + grid_sizer->Add( new wxCheckBox(this, ID_DISABLE_CANCEL, "Disable \"Cancel\""), 0, wxALIGN_CENTRE_VERTICAL ); + main_sizer->Add( grid_sizer, 0, wxALL, 10 ); wxSizer *button_sizer = CreateSeparatedButtonSizer( wxOK|wxCANCEL ); @@ -1810,6 +1818,16 @@ TestDefaultActionDialog::TestDefaultActionDialog( wxWindow *parent ) : SetSizerAndFit( main_sizer ); } +void TestDefaultActionDialog::OnDisableOK(wxCommandEvent& event) +{ + FindWindow(wxID_OK)->Enable(!event.IsChecked()); +} + +void TestDefaultActionDialog::OnDisableCancel(wxCommandEvent& event) +{ + FindWindow(wxID_CANCEL)->Enable(!event.IsChecked()); +} + void TestDefaultActionDialog::OnListBoxDClick(wxCommandEvent& event) { event.Skip( !m_catchListBoxDClick ); @@ -1820,6 +1838,11 @@ void TestDefaultActionDialog::OnCatchListBoxDClick(wxCommandEvent& WXUNUSED(even m_catchListBoxDClick = !m_catchListBoxDClick; } +void TestDefaultActionDialog::OnTextEnter(wxCommandEvent& event) +{ + wxLogMessage("Text \"%s\" entered.", event.GetString()); +} + void MyFrame::OnTestDefaultActionDialog(wxCommandEvent& WXUNUSED(event)) { TestDefaultActionDialog dialog( this ); diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h index f70e173606..fbad49919a 100644 --- a/samples/dialogs/dialogs.h +++ b/samples/dialogs/dialogs.h @@ -293,7 +293,10 @@ public: TestDefaultActionDialog( wxWindow *parent ); void OnListBoxDClick(wxCommandEvent& event); + void OnDisableOK(wxCommandEvent& event); + void OnDisableCancel(wxCommandEvent& event); void OnCatchListBoxDClick(wxCommandEvent& event); + void OnTextEnter(wxCommandEvent& event); private: bool m_catchListBoxDClick; diff --git a/src/msw/window.cpp b/src/msw/window.cpp index cd72c3c1e6..eee4ca18ad 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -2403,8 +2403,6 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg) // emulate the button click btn = wxFindWinFromHandle(msg->hwnd); } - - bProcess = false; } else // not a button itself, do we have default button? { @@ -2464,6 +2462,13 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg) return true; } + // This "Return" key press won't be actually used for + // navigation so don't generate wxNavigationKeyEvent + // for it but still pass it to IsDialogMessage() as it + // may handle it in some other way (e.g. by playing the + // default error sound). + bProcess = false; + #endif // wxUSE_BUTTON #ifdef __WXWINCE__