void cbStyledTextCtrl::OnKeyDown(wxKeyEvent& event) { switch (event.GetKeyCode()) { case WXK_TAB: { if (m_tabSmartJump && !(event.ControlDown() || event.ShiftDown() || event.AltDown())) { if (!AutoCompActive() && m_bracePosition != wxSCI_INVALID_POSITION) { m_lastPosition = GetCurrentPos(); GotoPos(m_bracePosition); // Need judge if it's the final brace HighlightRightBrace(); if (!m_tabSmartJump && CallTipActive()) CallTipCancel(); return; } } } break; case WXK_BACK: { if (m_tabSmartJump) { if (!(event.ControlDown() || event.ShiftDown() || event.AltDown())) { const int pos = GetCurrentPos(); const int index = s_leftBrace.Find((wxChar)GetCharAt(pos - 1)); if (index != wxNOT_FOUND && (wxChar)GetCharAt(pos) == s_rightBrace.GetChar(index)) { CharRight(); DeleteBack(); } } else if (m_lastPosition != wxSCI_INVALID_POSITION && event.ControlDown()) { GotoPos(m_lastPosition); m_lastPosition = wxSCI_INVALID_POSITION; return; } } } break; case WXK_RETURN: case WXK_ESCAPE: { if (m_tabSmartJump) m_tabSmartJump = false; } break; } event.Skip(); }
void cbStyledTextCtrl::EnableTabSmartJump(bool enable) { m_tabSmartJump = enable; m_bracePosition = GetCurrentPos(); HighlightRightBrace(); }
void cbStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& event) { HighlightRightBrace(); event.Skip(); }
void cbStyledTextCtrl::OnKeyUp(wxKeyEvent& event) { const int keyCode = event.GetKeyCode(); switch (keyCode) { case _T('['): // [ { case _T('\''): // ' " #ifdef __WXMSW__ case _T('9'): // ( for wxMSW #else case _T('('): // ( for wxGTK #endif { if ( !AllowTabSmartJump() ) break; wxChar ch = keyCode; if (event.ShiftDown()) { if (keyCode == _T('\'')) ch = _T('"'); else if (keyCode == _T('9')) ch = _T('('); else if (keyCode == _T('[')) ch = _T('{'); } int index = s_leftBrace.Find(ch); if (index != wxNOT_FOUND && (wxChar)GetCharAt(GetCurrentPos()) == s_rightBrace.GetChar(index)) { const int pos = GetCurrentPos(); if (pos != wxSCI_INVALID_POSITION) { m_tabSmartJump = true; m_bracePosition = pos; } } else if (keyCode == _T('\'')) // ' " m_tabSmartJump = false; } break; case _T(']'): // ] } #ifdef __WXMSW__ case _T('0'): // ) for wxMSW #else case _T(')'): // ) for wxGTK #endif { if (!AllowTabSmartJump()) break; if (keyCode == _T('0') && !event.ShiftDown()) break; m_tabSmartJump = false; } break; default: break; } HighlightRightBrace(); event.Skip(); }
void cbStyledTextCtrl::OnKeyDown(wxKeyEvent& event) { m_lastSelectedText = GetSelectedText(); bool emulateDwellStart = false; switch ( event.GetKeyCode() ) { case _T('I'): { if (event.GetModifiers() == wxMOD_ALT) m_braceShortcutState = true; break; } case WXK_TAB: { if (m_tabSmartJump && event.GetModifiers() == wxMOD_NONE) { if (!AutoCompActive() && m_bracePosition != wxSCI_INVALID_POSITION) { m_lastPosition = GetCurrentPos(); GotoPos(m_bracePosition); // Need judge if it's the final brace HighlightRightBrace(); if (!m_tabSmartJump && CallTipActive()) CallTipCancel(); return; } } } break; case WXK_BACK: { if (m_tabSmartJump) { if (!(event.ControlDown() || event.ShiftDown() || event.AltDown())) { const int pos = GetCurrentPos(); const int index = s_leftBrace.Find((wxChar)GetCharAt(pos - 1)); if (index != wxNOT_FOUND && (wxChar)GetCharAt(pos) == s_rightBrace.GetChar(index)) { CharRight(); DeleteBack(); } } else if (m_lastPosition != wxSCI_INVALID_POSITION && event.ControlDown()) { GotoPos(m_lastPosition); m_lastPosition = wxSCI_INVALID_POSITION; return; } } } break; case WXK_RETURN: case WXK_NUMPAD_ENTER: case WXK_ESCAPE: { if (m_tabSmartJump) m_tabSmartJump = false; } break; case WXK_CONTROL: { EmulateDwellStart(); emulateDwellStart = true; } break; default: break; } if (event.ControlDown() && !emulateDwellStart) EmulateDwellStart(); event.Skip(); }