X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..12bc5f9ad2c8be40081dbe69d0c0042fb30cbfa5:/src/motif/listbox.cpp?ds=sidebyside diff --git a/src/motif/listbox.cpp b/src/motif/listbox.cpp index 47016d85bc..cc73babadf 100644 --- a/src/motif/listbox.cpp +++ b/src/motif/listbox.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp +// Name: src/motif/listbox.cpp // Purpose: wxListBox // Author: Julian Smart // Modified by: @@ -9,13 +9,11 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "listbox.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_LISTBOX + #ifdef __VMS #define XtParent XTPARENT #define XtDisplay XTDISPLAY @@ -89,19 +87,13 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, { if( !wxControl::CreateControl( parent, id, pos, size, style, validator, name ) ) - return FALSE; + return false; - m_noItems = n; + m_noItems = (unsigned int)n; m_backgroundColour = * wxWHITE; Widget parentWidget = (Widget) parent->GetClientWidget(); - - WXFontType fontType = (WXFontType)NULL; - - if( m_font.Ok() ) - { - fontType = m_font.GetFontType(XtDisplay(parentWidget)); - } + Display* dpy = XtDisplay(parentWidget); Arg args[4]; int count = 0; @@ -111,9 +103,10 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, ( m_windowStyle & wxLB_EXTENDED ) ? XmEXTENDED_SELECT : XmBROWSE_SELECT ); ++count; - if( fontType ) + if( m_font.Ok() ) { - XtSetArg( args[count], (String)wxFont::GetFontTag(), fontType ); + XtSetArg( args[count], + (String)wxFont::GetFontTag(), m_font.GetFontTypeC(dpy) ); ++count; } if( m_windowStyle & wxLB_ALWAYS_SB ) @@ -158,7 +151,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, ChangeBackgroundColour(); - return TRUE; + return true; } bool wxListBox::Create(wxWindow *parent, wxWindowID id, @@ -199,8 +192,9 @@ void wxListBox::DoSetFirstItem( int N ) { int count, length; - if (N < 0) + if (!IsValid(N)) return; + XtVaGetValues ((Widget) m_mainWidget, XmNvisibleItemCount, &count, XmNitemCount, &length, @@ -210,7 +204,7 @@ 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; @@ -220,13 +214,13 @@ void wxListBox::Delete(int N) if (managed) XtUnmanageChild (listBox); - XmListDeletePos (listBox, N + 1); + XmListDeletePos (listBox, n + 1); if (managed) XtManageChild (listBox); sk.Restore(); - m_clientDataDict.Delete(N, HasClientObjectData()); + m_clientDataDict.Delete(n, HasClientObjectData()); m_noItems --; } @@ -271,13 +265,13 @@ void wxListBox::DoSetItems(const wxArrayString& items, void** clientData) 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]); if ( clientData ) for (i = 0; i < items.GetCount(); ++i) - m_clientDataDict.Set(i, (wxClientData*)clientData[i], FALSE); + m_clientDataDict.Set(i, (wxClientData*)clientData[i], false); XmListAddItems (listBox, text, items.GetCount(), 0); for (i = 0; i < items.GetCount(); i++) @@ -315,8 +309,10 @@ int wxDoFindStringInList(Widget w, const wxString& s) return -1; } -int wxListBox::FindString(const wxString& s) const +int wxListBox::FindString(const wxString& s, bool WXUNUSED(bCase)) const { + // FIXME: back to base class for not supported value of bCase + return wxDoFindStringInList( (Widget)m_mainWidget, s ); } @@ -337,9 +333,9 @@ void wxListBox::Clear() m_noItems = 0; } -void wxListBox::SetSelection(int N, bool select) +void wxListBox::DoSetSelection(int N, bool select) { - m_inSetValue = TRUE; + m_inSetValue = true; if (select) { #if 0 @@ -358,9 +354,9 @@ void wxListBox::SetSelection(int N, bool select) int i; for (i = 0; i < n; i++) XmListSelectPos ((Widget) m_mainWidget, - selections[i] + 1, FALSE); + selections[i] + 1, False); - XmListSelectPos ((Widget) m_mainWidget, N + 1, FALSE); + XmListSelectPos ((Widget) m_mainWidget, N + 1, False); XtVaSetValues ((Widget) m_mainWidget, XmNselectionPolicy, XmEXTENDED_SELECT, @@ -368,13 +364,13 @@ void wxListBox::SetSelection(int N, bool select) } else #endif // 0 - XmListSelectPos ((Widget) m_mainWidget, N + 1, FALSE); + XmListSelectPos ((Widget) m_mainWidget, N + 1, False); } else XmListDeselectPos ((Widget) m_mainWidget, N + 1); - m_inSetValue = FALSE; + m_inSetValue = false; } bool wxListBox::IsSelected(int N) const @@ -383,35 +379,35 @@ bool wxListBox::IsSelected(int N) const wxArrayInt theSelections; int count = GetSelections (theSelections); if (count == 0) - return FALSE; + return false; else { int j; for (j = 0; j < count; j++) if (theSelections[j] == N) - return TRUE; + return true; } - return FALSE; + return false; } -void wxListBox::DoSetItemClientObject(int n, wxClientData* clientData) +void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData) { - m_clientDataDict.Set(n, clientData, FALSE); + 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 @@ -481,12 +477,12 @@ 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; @@ -497,7 +493,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) 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 @@ -529,7 +525,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) 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; @@ -538,19 +534,19 @@ 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(); } void wxListBox::Command (wxCommandEvent & event) { - if (event.m_extraLong) - SetSelection (event.m_commandInt); + if (event.GetExtraLong()) + SetSelection (event.GetInt()); else { - Deselect (event.m_commandInt); + Deselect (event.GetInt()); return; } ProcessCommand (event); @@ -577,8 +573,8 @@ void wxListBoxCallback (Widget WXUNUSED(w), XtPointer clientData, event.SetClientObject( item->GetClientObject(n) ); else if ( item->HasClientUntypedData() ) event.SetClientData( item->GetClientData(n) ); - event.m_commandInt = n; - event.m_extraLong = TRUE; + event.SetInt(n); + event.SetExtraLong(true); event.SetEventObject(item); event.SetString( item->GetString( n ) ); @@ -635,8 +631,8 @@ void wxListBox::ChangeBackgroundColour() * function to change them (by default, taken from wxSystemSettings) */ wxColour backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); - wxDoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); - wxDoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE); + wxDoChangeBackgroundColour((WXWidget) hsb, backgroundColour, true); + wxDoChangeBackgroundColour((WXWidget) vsb, backgroundColour, true); XtVaSetValues (hsb, XmNtroughColor, backgroundColour.AllocColour(XtDisplay(hsb)), @@ -646,7 +642,7 @@ void wxListBox::ChangeBackgroundColour() NULL); // MBN: why change parent's background? It looks really ugly. - // wxDoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, TRUE); + // wxDoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, true); } void wxListBox::ChangeForegroundColour() @@ -670,7 +666,7 @@ void wxListBox::ChangeForegroundColour() */ } -int wxListBox::GetCount() const +unsigned int wxListBox::GetCount() const { return m_noItems; } @@ -722,3 +718,4 @@ wxSize wxListBox::DoGetBestSize() const return wxDoGetListBoxBestSize( (Widget)m_mainWidget, this ); } +#endif // wxUSE_LISTBOX