X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2387541fc31273693f30c438a6517b0669083234..194323c7c0c16222a1c05e2d7f7c507439d7260f:/src/univ/control.cpp diff --git a/src/univ/control.cpp b/src/univ/control.cpp index 1baecfc214..8e2a06e9de 100644 --- a/src/univ/control.cpp +++ b/src/univ/control.cpp @@ -6,17 +6,13 @@ // Created: 14.08.00 // RCS-ID: $Id$ // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ // declarations // ============================================================================ -#ifdef __GNUG__ - #pragma implementation "control.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -29,9 +25,10 @@ #if wxUSE_CONTROLS +#include "wx/control.h" + #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/control.h" #include "wx/dcclient.h" #endif @@ -46,17 +43,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow) BEGIN_EVENT_TABLE(wxControl, wxControlBase) - EVT_KEY_DOWN(wxControl::OnKeyDown) - EVT_KEY_UP(wxControl::OnKeyUp) - - EVT_MOUSE_EVENTS(wxControl::OnMouse) - - EVT_SET_FOCUS(wxControl::OnFocus) - EVT_KILL_FOCUS(wxControl::OnFocus) - - EVT_ACTIVATE(wxControl::OnActivate) + WX_EVENT_TABLE_INPUT_CONSUMER(wxControl) END_EVENT_TABLE() +WX_FORWARD_TO_INPUT_CONSUMER(wxControl) + // ---------------------------------------------------------------------------- // creation // ---------------------------------------------------------------------------- @@ -64,8 +55,6 @@ END_EVENT_TABLE() void wxControl::Init() { m_indexAccel = -1; - - m_handler = (wxInputHandler *)NULL; } bool wxControl::Create(wxWindow *parent, @@ -76,18 +65,13 @@ bool wxControl::Create(wxWindow *parent, const wxValidator& validator, const wxString& name) { - // we use wxNO_FULL_REPAINT_ON_RESIZE by default as it results in much - // less flicker and none of the standard controls needs to be entirely - // repainted after resize anyhow - if ( !wxControlBase::Create(parent, id, pos, size, - style | wxNO_FULL_REPAINT_ON_RESIZE, - validator, name) ) + if ( !wxControlBase::Create(parent, id, pos, size, style, validator, name) ) { // underlying window creation failed? - return FALSE; + return false; } - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -109,17 +93,19 @@ int wxControl::FindAccelIndex(const wxString& label, wxString *labelOnly) } int indexAccel = -1; - for ( const wxChar *pc = label; *pc != wxT('\0'); pc++ ) + for ( wxString::const_iterator pc = label.begin(); pc != label.end(); ++pc ) { if ( *pc == MNEMONIC_PREFIX ) { - pc++; // skip it - if ( *pc != MNEMONIC_PREFIX ) + ++pc; // skip it + if ( pc == label.end() ) + break; + else if ( *pc != MNEMONIC_PREFIX ) { if ( indexAccel == -1 ) { // remember it (-1 is for MNEMONIC_PREFIX itself - indexAccel = pc - label.c_str() - 1; + indexAccel = pc - label.begin() - 1; } else { @@ -139,89 +125,21 @@ int wxControl::FindAccelIndex(const wxString& label, wxString *labelOnly) void wxControl::SetLabel(const wxString& label) { - wxString labelOld = m_label; - m_indexAccel = FindAccelIndex(label, &m_label); - - if ( m_label != labelOld ) - { - Refresh(); - } -} - -wxString wxControl::GetLabel() const -{ - return m_label; -} - -// ---------------------------------------------------------------------------- -// focus/activation handling -// ---------------------------------------------------------------------------- - -void wxControl::OnFocus(wxFocusEvent& event) -{ - if ( m_handler && m_handler->HandleFocus(this, event) ) - Refresh(); - else - event.Skip(); -} - -void wxControl::OnActivate(wxActivateEvent& event) -{ - if ( m_handler && m_handler->HandleActivation(this, event.GetActive()) ) - Refresh(); - else - event.Skip(); -} - -// ---------------------------------------------------------------------------- -// input processing -// ---------------------------------------------------------------------------- - -void wxControl::CreateInputHandler(const wxString& inphandler) -{ - m_handler = wxTheme::Get()->GetInputHandler(inphandler); -} + // save original label + wxControlBase::SetLabel(label); -void wxControl::OnKeyDown(wxKeyEvent& event) -{ - if ( !m_handler || !m_handler->HandleKey(this, event, TRUE) ) - event.Skip(); + UnivDoSetLabel(label); } -void wxControl::OnKeyUp(wxKeyEvent& event) +void wxControl::UnivDoSetLabel(const wxString& label) { - if ( !m_handler || !m_handler->HandleKey(this, event, FALSE) ) - event.Skip(); -} + wxString labelOld = m_label; + m_indexAccel = FindAccelIndex(label, &m_label); -void wxControl::OnMouse(wxMouseEvent& event) -{ - if ( m_handler ) + if ( m_label != labelOld ) { - if ( event.Moving() || event.Entering() || event.Leaving() ) - { - if ( m_handler->HandleMouseMove(this, event) ) - return; - } - else // a click action - { - if ( m_handler->HandleMouse(this, event) ) - return; - } + Refresh(); } - - event.Skip(); -} - -// ---------------------------------------------------------------------------- -// the actions -// ---------------------------------------------------------------------------- - -bool wxControl::PerformAction(const wxControlAction& action, - long numArg, - const wxString& strArg) -{ - return FALSE; } #endif // wxUSE_CONTROLS