void EditCtrl::OnKeyDown( KeyboardEvent const & p_event ) { if ( !p_event.IsCtrlDown() && !p_event.IsAltDown() ) { eKEYBOARD_KEY l_code = p_event.GetKey(); if ( l_code == eKEY_BACKSPACE ) { DoDeleteCharBeforeCaret(); m_signals[eEDIT_EVENT_UPDATED]( m_caption ); } else if ( l_code == eKEY_DELETE ) { DoDeleteCharAtCaret(); m_signals[eEDIT_EVENT_UPDATED]( m_caption ); } else if ( l_code == eKEY_LEFT && m_caretIt != m_caption.begin() ) { m_caretIt--; DoUpdateCaption(); } else if ( l_code == eKEY_RIGHT && m_caretIt != m_caption.end() ) { m_caretIt++; DoUpdateCaption(); } else if ( l_code == eKEY_HOME && m_caretIt != m_caption.begin() ) { m_caretIt = m_caption.begin(); DoUpdateCaption(); } else if ( l_code == eKEY_END && m_caretIt != m_caption.end() ) { m_caretIt = m_caption.end(); DoUpdateCaption(); } } }