From bc0f253462cfaf5ca6617ba9fad9987014a66e4e Mon Sep 17 00:00:00 2001 From: Jaakko Salli Date: Sat, 19 Dec 2009 12:08:00 +0000 Subject: [PATCH] Properly notify active editor control when it receives the focus. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/propgrid/propgrid.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index b5b1893ce4..96bd168463 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -5565,6 +5565,8 @@ bool wxPropertyGrid::IsEditorFocused() const void wxPropertyGrid::HandleFocusChange( wxWindow* newFocused ) { unsigned int oldFlags = m_iFlags; + bool wasEditorFocused = false; + wxWindow* wndEditor = m_wndEditor; m_iFlags &= ~(wxPG_FL_FOCUSED); @@ -5573,9 +5575,13 @@ void wxPropertyGrid::HandleFocusChange( wxWindow* newFocused ) // This must be one of nextFocus' parents. while ( parent ) { + if ( parent == wndEditor ) + { + wasEditorFocused = true; + } // Use m_eventObject, which is either wxPropertyGrid or // wxPropertyGridManager, as appropriate. - if ( parent == m_eventObject ) + else if ( parent == m_eventObject ) { m_iFlags |= wxPG_FL_FOCUSED; break; @@ -5583,6 +5589,17 @@ void wxPropertyGrid::HandleFocusChange( wxWindow* newFocused ) parent = parent->GetParent(); } + // Notify editor control when it receives a focus + if ( wasEditorFocused && m_curFocused != newFocused ) + { + wxPGProperty* p = GetSelection(); + if ( p ) + { + const wxPGEditor* editor = p->GetEditorClass(); + editor->OnFocus(p, GetEditorControl()); + } + } + m_curFocused = newFocused; if ( (m_iFlags & wxPG_FL_FOCUSED) != -- 2.45.2