diff --git a/ZRCola/ZRCola.fbp b/ZRCola/ZRCola.fbp index 9de638a..f0f9f22 100644 --- a/ZRCola/ZRCola.fbp +++ b/ZRCola/ZRCola.fbp @@ -3388,7 +3388,7 @@ - + OnPreviewKeyDown diff --git a/ZRCola/zrcolachrslct.cpp b/ZRCola/zrcolachrslct.cpp index 4bdca1b..7ecd66b 100644 --- a/ZRCola/zrcolachrslct.cpp +++ b/ZRCola/zrcolachrslct.cpp @@ -311,6 +311,23 @@ void wxZRColaCharSelect::OnUnicodeText(wxCommandEvent& event) } +void wxZRColaCharSelect::OnPreviewKeyDown(wxKeyEvent& event) +{ + int key_code = event.GetKeyCode(); + if (key_code == WXK_TAB != NULL) { + wxNavigationKeyEvent eventNav; + eventNav.SetDirection(!event.ShiftDown()); + eventNav.SetWindowChange(event.ControlDown()); + eventNav.SetEventObject(this); + + if (HandleWindowEvent(eventNav)) + return; + } + + event.Skip(); +} + + void wxZRColaCharSelect::OnNavigateBack(wxHyperlinkEvent& event) { event.StopPropagation(); diff --git a/ZRCola/zrcolachrslct.h b/ZRCola/zrcolachrslct.h index 985fbcf..ffeae72 100644 --- a/ZRCola/zrcolachrslct.h +++ b/ZRCola/zrcolachrslct.h @@ -68,6 +68,7 @@ protected: virtual void OnNavigateBack(wxHyperlinkEvent& event); virtual void OnNavigateForward(wxHyperlinkEvent& event); virtual void OnUnicodeText(wxCommandEvent& event); + virtual void OnPreviewKeyDown(wxKeyEvent& event); virtual void OnRelatedSelectCell(wxGridEvent& event); virtual void OnOKButtonClick(wxCommandEvent& event); diff --git a/ZRCola/zrcolagui.cpp b/ZRCola/zrcolagui.cpp index f807911..8159050 100644 --- a/ZRCola/zrcolagui.cpp +++ b/ZRCola/zrcolagui.cpp @@ -533,7 +533,7 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id, sbSizerPreview->Add( bSizerUnicode, 0, wxALIGN_CENTER|wxALL, 5 ); - m_gridPreview = new wxGrid( sbSizerPreview->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER ); + m_gridPreview = new wxGrid( sbSizerPreview->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSTATIC_BORDER|wxTAB_TRAVERSAL ); // Grid m_gridPreview->CreateGrid( 1, 1 ); @@ -661,6 +661,7 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id, m_gridRecent->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnRecentSelectCell ), NULL, this ); m_gridRecent->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnRecentKeyDown ), NULL, this ); m_unicode->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnUnicodeText ), NULL, this ); + m_gridPreview->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnPreviewKeyDown ), NULL, this ); m_navigateBack->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnNavigateBack ), NULL, this ); m_navigateForward->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnNavigateForward ), NULL, this ); m_gridRelated->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnRelatedSelectCell ), NULL, this ); @@ -683,6 +684,7 @@ wxZRColaCharSelectBase::~wxZRColaCharSelectBase() m_gridRecent->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnRecentSelectCell ), NULL, this ); m_gridRecent->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnRecentKeyDown ), NULL, this ); m_unicode->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnUnicodeText ), NULL, this ); + m_gridPreview->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnPreviewKeyDown ), NULL, this ); m_navigateBack->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnNavigateBack ), NULL, this ); m_navigateForward->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnNavigateForward ), NULL, this ); m_gridRelated->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnRelatedSelectCell ), NULL, this ); diff --git a/ZRCola/zrcolagui.h b/ZRCola/zrcolagui.h index c92fc79..818b5fa 100644 --- a/ZRCola/zrcolagui.h +++ b/ZRCola/zrcolagui.h @@ -225,6 +225,7 @@ class wxZRColaCharSelectBase : public wxDialog virtual void OnRecentSelectCell( wxGridEvent& event ) { event.Skip(); } virtual void OnRecentKeyDown( wxKeyEvent& event ) { event.Skip(); } virtual void OnUnicodeText( wxCommandEvent& event ) { event.Skip(); } + virtual void OnPreviewKeyDown( wxKeyEvent& event ) { event.Skip(); } virtual void OnNavigateBack( wxHyperlinkEvent& event ) { event.Skip(); } virtual void OnNavigateForward( wxHyperlinkEvent& event ) { event.Skip(); } virtual void OnRelatedSelectCell( wxGridEvent& event ) { event.Skip(); }