]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/control.cpp
#4479: wx.ComboBox needs a SetFont method
[wxWidgets.git] / src / univ / control.cpp
index 8f1fb4a4d17d6d90a434bb92592c22701d61f154..8e2a06e9de8a2f6a1042af3dafb0f60a95cc842d 100644 (file)
@@ -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
 // ----------------------------------------------------------------------------
 
 #if wxUSE_CONTROLS
 
+#include "wx/control.h"
+
 #ifndef WX_PRECOMP
     #include "wx/app.h"
-    #include "wx/control.h"
     #include "wx/dcclient.h"
 #endif
 
 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,
@@ -77,9 +66,12 @@ bool wxControl::Create(wxWindow *parent,
                        const wxString& name)
 {
     if ( !wxControlBase::Create(parent, id, pos, size, style, validator, name) )
-        return FALSE;
+    {
+        // underlying window creation failed?
+        return false;
+    }
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -101,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
                 {
@@ -131,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