void wxBitmapToggleButton::OnChar(wxKeyEvent &event) { if (event.GetKeyCode() == WXK_SPACE) { m_depressed = !m_depressed; Refresh(); wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId); event.SetInt(GetValue()); event.SetEventObject(this); ProcessCommand(event); } }
void SearchListBox::OnChar(wxKeyEvent& event) { if (event.GetKeyCode() == WXK_RETURN) { const int item = GetSelection(); if (item != -1) { wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, GetId()); event.SetEventObject(this); event.SetInt(item); (void)GetEventHandler()->ProcessEvent(event); } } else event.Skip(); }
void wxCheckListBox::OnChar(wxKeyEvent& event) { if ( event.GetKeyCode() == WXK_SPACE ) { int index = GetSelection() ; if ( index >= 0 ) { Check(index, !IsChecked(index) ) ; wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, GetId()); event.SetInt(index); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } } else event.Skip(); }
void wxSpinCtrl::OnChar(wxKeyEvent& event) { switch ( event.GetKeyCode() ) { case WXK_RETURN: { wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); InitCommandEvent(event); wxString val = wxGetWindowText(m_hwndBuddy); event.SetString(val); event.SetInt(GetValue()); if ( GetEventHandler()->ProcessEvent(event) ) return; break; } case WXK_TAB: // always produce navigation event - even if we process TAB // ourselves the fact that we got here means that the user code // decided to skip processing of this TAB - probably to let it // do its default job. { wxNavigationKeyEvent eventNav; eventNav.SetDirection(!event.ShiftDown()); eventNav.SetWindowChange(event.ControlDown()); eventNav.SetEventObject(this); if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) ) return; } break; } // no, we didn't process it event.Skip(); }
void wxListBox::OnChar(wxKeyEvent& event) { if ( event.GetKeyCode() == WXK_RETURN || event.GetKeyCode() == WXK_NUMPAD_ENTER) { wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); if ( tlw && tlw->GetDefaultItem() ) { wxButton *def = wxDynamicCast(tlw->GetDefaultItem(), wxButton); if ( def && def->IsEnabled() ) { wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() ); event.SetEventObject(def); def->Command(event); return ; } } event.Skip() ; } /* generate wxID_CANCEL if command-. or <esc> has been pressed (typically in dialogs) */ else if (event.GetKeyCode() == WXK_ESCAPE || (event.GetKeyCode() == '.' && event.MetaDown() ) ) { // FIXME: look in ancestors, not just parent. wxWindow* win = GetParent()->FindWindow( wxID_CANCEL ) ; if (win) { wxCommandEvent new_event(wxEVT_COMMAND_BUTTON_CLICKED,wxID_CANCEL); new_event.SetEventObject( win ); win->GetEventHandler()->ProcessEvent( new_event ); } } else if ( event.GetKeyCode() == WXK_TAB ) { wxNavigationKeyEvent new_event; new_event.SetEventObject( this ); new_event.SetDirection( !event.ShiftDown() ); /* CTRL-TAB changes the (parent) window, i.e. switch notebook page */ new_event.SetWindowChange( event.ControlDown() ); new_event.SetCurrentFocus( this ); if ( !GetEventHandler()->ProcessEvent( new_event ) ) event.Skip() ; } else if ( event.GetKeyCode() == WXK_DOWN || event.GetKeyCode() == WXK_UP ) { // perform the default key handling first wxControl::OnKeyDown( event ) ; wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId); event.SetEventObject( this ); wxArrayInt aSelections; int n, count = GetSelections(aSelections); if ( count > 0 ) { n = aSelections[0]; if ( HasClientObjectData() ) event.SetClientObject( GetClientObject(n) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData(n) ); event.SetString(GetString(n)); } else { n = -1; } event.SetInt(n); GetEventHandler()->ProcessEvent(event); } else { if ( event.GetTimestamp() > m_lastTypeIn + 60 ) { m_typeIn = wxEmptyString ; } m_lastTypeIn = event.GetTimestamp() ; m_typeIn += (char) event.GetKeyCode() ; int line = FindString(wxT("*")+m_typeIn+wxT("*")) ; if ( line >= 0 ) { if ( GetSelection() != line ) { SetSelection(line) ; wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId); event.SetEventObject( this ); if ( HasClientObjectData() ) event.SetClientObject( GetClientObject( line ) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData(line) ); event.SetString(GetString(line)); event.SetInt(line); GetEventHandler()->ProcessEvent(event); } } } }