X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/355b4d3de54b76db87439fa2142c7334a6e48f85..ae6a64b6af83a95769363424e09d117a96a15a4c:/src/motif/listbox.cpp diff --git a/src/motif/listbox.cpp b/src/motif/listbox.cpp index 0f5deaca4d..07670065d8 100644 --- a/src/motif/listbox.cpp +++ b/src/motif/listbox.cpp @@ -12,18 +12,23 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_LISTBOX + +#include "wx/listbox.h" + +#ifndef WX_PRECOMP + #include "wx/dynarray.h" + #include "wx/log.h" + #include "wx/utils.h" + #include "wx/settings.h" + #include "wx/arrstr.h" +#endif + #ifdef __VMS #define XtParent XTPARENT #define XtDisplay XTDISPLAY #endif -# include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/dynarray.h" -#include "wx/log.h" -#include "wx/utils.h" -#include "wx/arrstr.h" - #ifdef __VMS__ #pragma message disable nosimpint #endif @@ -87,7 +92,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, validator, name ) ) return false; - m_noItems = n; + m_noItems = (unsigned int)n; m_backgroundColour = * wxWHITE; Widget parentWidget = (Widget) parent->GetClientWidget(); @@ -190,8 +195,9 @@ void wxListBox::DoSetFirstItem( int N ) { int count, length; - if (N < 0) + if (!IsValid(N)) return; + XtVaGetValues ((Widget) m_mainWidget, XmNvisibleItemCount, &count, XmNitemCount, &length, @@ -201,35 +207,20 @@ void wxListBox::DoSetFirstItem( int N ) XmListSetPos ((Widget) m_mainWidget, N + 1); } -void wxListBox::Delete(int N) +void wxListBox::Delete(unsigned int n) { - wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; - bool managed = XtIsManaged(listBox); + XmListDeletePos (listBox, n + 1); - if (managed) - XtUnmanageChild (listBox); - - XmListDeletePos (listBox, N + 1); - - if (managed) - XtManageChild (listBox); - - sk.Restore(); - m_clientDataDict.Delete(N, HasClientObjectData()); + m_clientDataDict.Delete(n, HasClientObjectData()); m_noItems --; } int wxListBox::DoAppend(const wxString& item) { - wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); int n; XtVaGetValues (listBox, XmNitemCount, &n, NULL); wxXmString text( item ); @@ -240,10 +231,6 @@ int wxListBox::DoAppend(const wxString& item) // selection policy!! SetSelectionPolicy(); - if (managed) - XtManageChild (listBox); - - sk.Restore(); m_noItems ++; return GetCount() - 1; @@ -251,18 +238,13 @@ int wxListBox::DoAppend(const wxString& item) void wxListBox::DoSetItems(const wxArrayString& items, void** clientData) { - wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; if( HasClientObjectData() ) m_clientDataDict.DestroyData(); - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); XmString *text = new XmString[items.GetCount()]; - size_t i; + unsigned int i; for (i = 0; i < items.GetCount(); ++i) text[i] = wxStringToXmString (items[i]); @@ -279,11 +261,6 @@ void wxListBox::DoSetItems(const wxArrayString& items, void** clientData) // selection policy!! SetSelectionPolicy(); - if (managed) - XtManageChild (listBox); - - sk.Restore(); - m_noItems = items.GetCount(); } @@ -387,24 +364,24 @@ bool wxListBox::IsSelected(int N) const return false; } -void wxListBox::DoSetItemClientObject(int n, wxClientData* clientData) +void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData) { m_clientDataDict.Set(n, clientData, false); } -wxClientData* wxListBox::DoGetItemClientObject(int n) const +wxClientData* wxListBox::DoGetItemClientObject(unsigned int n) const { return m_clientDataDict.Get(n); } -void *wxListBox::DoGetItemClientData(int N) const +void *wxListBox::DoGetItemClientData(unsigned int n) const { - return (void*)m_clientDataDict.Get(N); + return (void*)m_clientDataDict.Get(n); } -void wxListBox::DoSetItemClientData(int N, void *Client_data) +void wxListBox::DoSetItemClientData(unsigned int n, void *Client_data) { - m_clientDataDict.Set(N, (wxClientData*)Client_data, false); + m_clientDataDict.Set(n, (wxClientData*)Client_data, false); } // Return number of selections and an array of selected integers @@ -474,23 +451,17 @@ wxString wxDoGetStringInList( Widget listBox, int n ) return wxEmptyString; } -wxString wxListBox::GetString( int n ) const +wxString wxListBox::GetString(unsigned int n) const { return wxDoGetStringInList( (Widget)m_mainWidget, n ); } -void wxListBox::DoInsertItems(const wxArrayString& items, int pos) +void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos) { - wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild(listBox); - XmString *text = new XmString[items.GetCount()]; - size_t i; + unsigned int i; // Steve Hammes: Motif 1.1 compatibility // #if XmVersion > 1100 // Corrected by Sergey Krasnov from Steve Hammes' code @@ -514,15 +485,10 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) // selection policy!! SetSelectionPolicy(); - if (managed) - XtManageChild(listBox); - - sk.Restore(); - m_noItems += items.GetCount(); } -void wxListBox::SetString(int N, const wxString& s) +void wxListBox::SetString(unsigned int n, const wxString& s) { wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; @@ -531,8 +497,8 @@ void wxListBox::SetString(int N, const wxString& s) // delete the item and add it again. // FIXME isn't there a way to change it in place? - XmListDeletePos (listBox, N+1); - XmListAddItem (listBox, text(), N+1); + XmListDeletePos (listBox, n+1); + XmListAddItem (listBox, text(), n+1); sk.Restore(); } @@ -663,7 +629,7 @@ void wxListBox::ChangeForegroundColour() */ } -int wxListBox::GetCount() const +unsigned int wxListBox::GetCount() const { return m_noItems; } @@ -714,3 +680,5 @@ wxSize wxListBox::DoGetBestSize() const { return wxDoGetListBoxBestSize( (Widget)m_mainWidget, this ); } + +#endif // wxUSE_LISTBOX