-/* static */
-int wxControl::FindAccelIndex(const wxString& label, wxString *labelOnly)
-{
- // 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('&');
-
- if ( labelOnly )
- {
- labelOnly->Empty();
- labelOnly->Alloc(label.length());
- }
-
- int indexAccel = -1;
- for ( wxString::const_iterator pc = label.begin(); pc != label.end(); ++pc )
- {
- 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.begin() - 1;
- }
- else
- {
- wxFAIL_MSG(_T("duplicate accel char in control label"));
- }
- }
- }
-
- if ( labelOnly )
- {
- *labelOnly += *pc;
- }
- }
-
- return indexAccel;
-}
-