X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..04bf2fb51514e3ec8631a1d8ea1f610fca851005:/src/motif/choice.cpp?ds=sidebyside diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp index c035ba3f62..40bd97b453 100644 --- a/src/motif/choice.cpp +++ b/src/motif/choice.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp +// Name: src/motif/choice.cpp // Purpose: wxChoice // Author: Julian Smart // Modified by: @@ -183,13 +183,25 @@ wxChoice::~wxChoice() m_clientDataDict.DestroyData(); } -int wxChoice::DoAppend(const wxString& item) +static inline wxChar* MYcopystring(const wxChar* s) +{ + wxChar* copy = new wxChar[wxStrlen(s) + 1]; + return wxStrcpy(copy, s); +} + +int wxChoice::DoInsert(const wxString& item, int pos) { +#ifndef XmNpositionIndex + wxCHECK_MSG( pos == GetCount(), -1, wxT("insert not implemented")); +#endif Widget w = XtVaCreateManagedWidget (wxStripMenuCodes(item), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, +#endif +#ifdef XmNpositionIndex + XmNpositionIndex, pos, #endif NULL); @@ -198,7 +210,7 @@ int wxChoice::DoAppend(const wxString& item) if( m_font.Ok() ) wxDoChangeFont( w, m_font ); - m_widgetArray.Add(w); + m_widgetArray.Insert(w, pos); char mnem = wxFindMnemonic (item); if (mnem != 0) @@ -217,18 +229,16 @@ int wxChoice::DoAppend(const wxString& item) XmNlabelString, text(), NULL); } - m_stringList.Add(item); + // need to ditch wxStringList for wxArrayString + m_stringList.Insert(pos, MYcopystring(item)); m_noStrings ++; - return GetCount() - 1; + return pos; } -int wxChoice::DoInsert(const wxString& item, int pos) +int wxChoice::DoAppend(const wxString& item) { - wxCHECK_MSG(false, -1, wxT("insert not implemented")); - -// wxCHECK_MSG((pos>=0) && (pos<=GetCount()), -1, wxT("invalid index")); -// if (pos == GetCount()) return DoAppend(item); + return DoInsert(item, GetCount()); } void wxChoice::Delete(int n) @@ -278,7 +288,7 @@ int wxChoice::GetSelection() const wxXmString freeMe(text); wxString s = wxXmStringToString( text ); - if (!s.IsEmpty()) + if (!s.empty()) { int i = 0; for (wxStringList::compatibility_iterator node = m_stringList.GetFirst (); @@ -329,21 +339,6 @@ void wxChoice::SetSelection(int n) m_inSetValue = false; } -int wxChoice::FindString(const wxString& s) const -{ - int i = 0; - for (wxStringList::compatibility_iterator node = m_stringList.GetFirst(); - node; node = node->GetNext ()) - { - if (s == node->GetData()) - return i; - - i++; - } - - return wxNOT_FOUND; -} - wxString wxChoice::GetString(int n) const { wxStringList::compatibility_iterator node = m_stringList.Item(n); @@ -357,7 +352,7 @@ void wxChoice::SetColumns(int n) { if (n<1) n = 1 ; - short numColumns = n ; + short numColumns = (short)n ; Arg args[3]; XtSetArg(args[0], XmNnumColumns, numColumns);