]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/control.cpp
fixing modal dialog quit after nested message box problem
[wxWidgets.git] / src / univ / control.cpp
index 1cf171e97aaeeda5cf869b1745f5daad9f15ff93..fa8ae7b38437d7ddc3919efa0f26792b7492a475 100644 (file)
 
 #if wxUSE_CONTROLS
 
 
 #if wxUSE_CONTROLS
 
+#include "wx/control.h"
+
 #ifndef WX_PRECOMP
     #include "wx/app.h"
 #ifndef WX_PRECOMP
     #include "wx/app.h"
-    #include "wx/control.h"
     #include "wx/dcclient.h"
 #endif
 
     #include "wx/dcclient.h"
 #endif
 
@@ -54,8 +55,6 @@ WX_FORWARD_TO_INPUT_CONSUMER(wxControl)
 void wxControl::Init()
 {
     m_indexAccel = -1;
 void wxControl::Init()
 {
     m_indexAccel = -1;
-
-    m_inputHandler = (wxInputHandler *)NULL;
 }
 
 bool wxControl::Create(wxWindow *parent,
 }
 
 bool wxControl::Create(wxWindow *parent,
@@ -79,50 +78,15 @@ bool wxControl::Create(wxWindow *parent,
 // mnemonics handling
 // ----------------------------------------------------------------------------
 
 // mnemonics handling
 // ----------------------------------------------------------------------------
 
-/* static */
-int wxControl::FindAccelIndex(const wxString& label, wxString *labelOnly)
+void wxControl::SetLabel(const wxString& label)
 {
 {
-    // the character following MNEMONIC_PREFIX is the accelerator for this
-    // control unless it is MNEMONIC_PREFIX too - this allows to insert
-    // literal MNEMONIC_PREFIX chars into the label
-    static const wxChar MNEMONIC_PREFIX = _T('&');
+    // save original label
+    wxControlBase::SetLabel(label);
 
 
-    if ( labelOnly )
-    {
-        labelOnly->Empty();
-        labelOnly->Alloc(label.length());
-    }
-
-    int indexAccel = -1;
-    for ( const wxChar *pc = label; *pc != wxT('\0'); pc++ )
-    {
-        if ( *pc == MNEMONIC_PREFIX )
-        {
-            pc++; // skip it
-            if ( *pc != MNEMONIC_PREFIX )
-            {
-                if ( indexAccel == -1 )
-                {
-                    // remember it (-1 is for MNEMONIC_PREFIX itself
-                    indexAccel = pc - label.c_str() - 1;
-                }
-                else
-                {
-                    wxFAIL_MSG(_T("duplicate accel char in control label"));
-                }
-            }
-        }
-
-        if ( labelOnly )
-        {
-            *labelOnly += *pc;
-        }
-    }
-
-    return indexAccel;
+    UnivDoSetLabel(label);
 }
 
 }
 
-void wxControl::SetLabel(const wxString& label)
+void wxControl::UnivDoSetLabel(const wxString& label)
 {
     wxString labelOld = m_label;
     m_indexAccel = FindAccelIndex(label, &m_label);
 {
     wxString labelOld = m_label;
     m_indexAccel = FindAccelIndex(label, &m_label);
@@ -133,9 +97,4 @@ void wxControl::SetLabel(const wxString& label)
     }
 }
 
     }
 }
 
-wxString wxControl::GetLabel() const
-{
-    return m_label;
-}
-
 #endif // wxUSE_CONTROLS
 #endif // wxUSE_CONTROLS