X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/11e62fe658531aaa2891351f19bd0a4c076717ae..bb2955b339a83d043ed94cdbed982ea77f93d95c:/src/motif/choice.cpp diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp index 8b8062b87b..2ffba977d6 100644 --- a/src/motif/choice.cpp +++ b/src/motif/choice.cpp @@ -12,15 +12,13 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_CHOICE + #ifdef __VMS #define XtDisplay XTDISPLAY #define XtParent XTPARENT #endif -#include "wx/defs.h" - -#if wxUSE_CHOICE - #include "wx/choice.h" #include "wx/utils.h" #include "wx/arrstr.h" @@ -183,13 +181,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( (size_t)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 +208,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 +227,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, (int)GetCount()); } void wxChoice::Delete(int n) @@ -342,7 +350,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); @@ -487,7 +495,7 @@ void wxChoice::ChangeForegroundColour() wxDoChangeForegroundColour(m_widgetArray[i], m_foregroundColour); } -int wxChoice::GetCount() const +size_t wxChoice::GetCount() const { return m_noStrings; }