From 6b2a6baf2e9733c4a98838dac15fcc1476f10e98 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 18 Nov 2015 22:56:09 +0100 Subject: [PATCH] Allow custom handling of Enter/Tab with modifiers in wxDataViewCtrl While Enter and Tab on their own should be used to finish cell editing, the cell editor itself may want to process key combinations involving these keys with modifiers, e.g. Shift-Enter, so don't intercept those in at least the generic version of wxDataViewCtrl to allow catching them in the editor. --- src/common/datavcmn.cpp | 17 ++++++++++------- src/generic/datavgen.cpp | 10 ++++++++++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index e94da72067..3f4f8299af 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -1044,17 +1044,20 @@ void wxDataViewEditorCtrlEvtHandler::OnChar( wxKeyEvent &event ) { switch ( event.m_keyCode ) { - case WXK_RETURN: - m_finished = true; - m_owner->FinishEditing(); - break; - case WXK_ESCAPE: - { m_finished = true; m_owner->CancelEditing(); break; - } + + case WXK_RETURN: + if ( !event.HasAnyModifiers() ) + { + m_finished = true; + m_owner->FinishEditing(); + break; + } + wxFALLTHROUGH; // Ctrl/Alt/Shift-Enter is not handled specially + default: event.Skip(); } diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index cd2c2b4d95..3cad87b018 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -3632,7 +3632,17 @@ void wxDataViewMainWindow::OnCharHook(wxKeyEvent& event) return; case WXK_RETURN: + // Shift-Enter is not special neither. + if ( event.ShiftDown() ) + break; + wxFALLTHROUGH; + case WXK_TAB: + // Ctrl/Alt-Tab or Enter could be used for something else, so + // don't handle them here. + if ( event.HasModifiers() ) + break; + m_editorRenderer->FinishEditing(); return; }