void wxToggleButton::Click() { wxCommandEvent event(wxEVT_TOGGLEBUTTON, GetId()); InitCommandEvent(event); event.SetInt(GetValue()); Command(event); }
void wxTextCtrl::OnChar(wxKeyEvent& event) { switch ( event.GetKeyCode() ) { case WXK_RETURN: if ( !HasFlag(wxTE_MULTILINE) ) { wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); InitCommandEvent(event); event.SetString(GetValue()); if ( GetEventHandler()->ProcessEvent(event) ) return; } //else: multiline controls need Enter for themselves break; case WXK_TAB: // ok, so this is getting absolutely ridiculous but I don't see // any other way to fix this bug: when a multiline text control is // inside a wxFrame, we need to generate the navigation event as // otherwise nothing happens at all, but when the same control is // created inside a dialog, IsDialogMessage() *does* switch focus // all by itself and so if we do it here as well, it is advanced // twice and goes to the next control... to prevent this from // happening we're doing this ugly check, the logic being that if // we don't have focus then it had been already changed to the next // control // // the right thing to do would, of course, be to understand what // the hell is IsDialogMessage() doing but this is beyond my feeble // forces at the moment unfortunately if ( !(m_windowStyle & wxTE_PROCESS_TAB)) { if ( FindFocus() == this ) { int flags = 0; if (!event.ShiftDown()) flags |= wxNavigationKeyEvent::IsForward ; if (event.ControlDown()) flags |= wxNavigationKeyEvent::WinChange ; if (Navigate(flags)) return; } } else { // Insert tab since calling the default Windows handler // doesn't seem to do it WriteText(wxT("\t")); } break; } // no, we didn't process it event.Skip(); }
bool wxTextCtrl::OS2Command( WXUINT uParam , WXWORD WXUNUSED(vId) ) { switch (uParam) { case EN_SETFOCUS: case EN_KILLFOCUS: { wxFocusEvent vEvent( uParam == EN_KILLFOCUS ? wxEVT_KILL_FOCUS : wxEVT_SET_FOCUS ,m_windowId ); vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); } break; case EN_CHANGE: { if (m_bSkipUpdate) { m_bSkipUpdate = false; break; } wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED ,m_windowId ); InitCommandEvent(vEvent); ProcessCommand(vEvent); } break; case EN_OVERFLOW: // // The text size limit has been hit - increase it // AdjustSpaceLimit(); break; case EN_SCROLL: case EN_INSERTMODETOGGLE: case EN_MEMERROR: return false; default: return false; } // // Processed // return true; } // end of wxTextCtrl::OS2Command
void wxRadioBox::SendRadioEvent() { wxCHECK_RET( m_selection != -1, _T("no active radio button") ); wxCommandEvent event(wxEVT_COMMAND_RADIOBOX_SELECTED, GetId()); InitCommandEvent(event); event.SetInt(m_selection); event.SetString(GetString(m_selection)); Command(event); }
void wxControlWithItemsBase::InitCommandEventWithItems(wxCommandEvent& event, int n) { InitCommandEvent(event); if ( n != wxNOT_FOUND ) { if ( HasClientObjectData() ) event.SetClientObject(GetClientObject(n)); else if ( HasClientUntypedData() ) event.SetClientData(GetClientData(n)); } }
bool wxTextCtrl::SendUpdateEvent() { // is event reporting suspended? if ( m_suppressNextUpdate ) { // do process the next one m_suppressNextUpdate = false; return false; } wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId()); InitCommandEvent(event); event.SetString(GetValue()); return ProcessCommand(event); }
void wxSpinCtrl::OnChar ( wxKeyEvent& rEvent ) { switch (rEvent.GetKeyCode()) { case WXK_RETURN: { wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_ENTER ,m_windowId ); wxString sVal = wxGetWindowText(m_hWndBuddy); InitCommandEvent(vEvent); vEvent.SetString(sVal); vEvent.SetInt(GetValue()); if (HandleWindowEvent(vEvent)) 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 vEventNav; vEventNav.SetDirection(!rEvent.ShiftDown()); vEventNav.SetWindowChange(rEvent.ControlDown()); vEventNav.SetEventObject(this); if (GetParent()->HandleWindowEvent(vEventNav)) return; } break; } // // No, we didn't process it // rEvent.Skip(); } // end of wxSpinCtrl::OnChar
bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam) { switch ( msg ) { case WM_CHAR: // for compatibility with wxTextCtrl, generate a special message // when Enter is pressed if ( wParam == VK_RETURN ) { wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); InitCommandEvent(event); event.SetString(GetValue()); event.SetInt(GetSelection()); if ( ProcessCommand(event) ) { // don't let the event through to the native control // because it doesn't need it and may generate an annoying // beep if it gets it return true; } } // fall through case WM_SYSCHAR: return HandleChar(wParam, lParam, true /* isASCII */); case WM_SYSKEYDOWN: case WM_KEYDOWN: return HandleKeyDown(wParam, lParam); case WM_SYSKEYUP: case WM_KEYUP: return HandleKeyUp(wParam, lParam); case WM_SETFOCUS: return HandleSetFocus((WXHWND)wParam); case WM_KILLFOCUS: return HandleKillFocus((WXHWND)wParam); } return false; }
bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) { switch ( param ) { case EN_SETFOCUS: case EN_KILLFOCUS: { wxFocusEvent event(param == EN_KILLFOCUS ? wxEVT_KILL_FOCUS : wxEVT_SET_FOCUS, m_windowId); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } break; case EN_CHANGE: SendUpdateEvent(); break; case EN_MAXTEXT: // the text size limit has been hit -- try to increase it if ( !AdjustSpaceLimit() ) { wxCommandEvent event(wxEVT_COMMAND_TEXT_MAXLEN, m_windowId); InitCommandEvent(event); event.SetString(GetValue()); ProcessCommand(event); } break; // the other edit notification messages are not processed default: return false; } // processed return true; }
void wxButton::Click() { wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, GetId()); InitCommandEvent(event); Command(event); }
void wxButton::Click() { wxCommandEvent event(wxEVT_BUTTON, GetId()); InitCommandEvent(event); Command(event); }