]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/listbox.cpp
non-pch build fix
[wxWidgets.git] / src / mac / carbon / listbox.cpp
index 669776864952f84846be0fd270e35fcf30a63404..dc7cf7ec1f3650bdf7a2fb4582ad7acf8c8938af 100644 (file)
@@ -24,7 +24,7 @@
     #include "wx/dcclient.h"
 #endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControlWithItems)
 
 BEGIN_EVENT_TABLE(wxListBox, wxControl)
 END_EVENT_TABLE()
@@ -82,12 +82,12 @@ bool wxListBox::Create(
         return false;
 
     wxMacDataBrowserListControl* control = new wxMacDataBrowserListControl( this, pos, size, style );
-    control->SetClientDataType( m_clientDataItemsType );
+    // TODO CHECK control->SetClientDataType( m_clientDataItemsType );
     m_peer = control;
 
     MacPostControlCreate( pos, size );
 
-    InsertItems( n, choices, 0 );
+    Append(n, choices);
 
    // Needed because it is a wxControlWithItems
     SetInitialSize( size );
@@ -116,36 +116,29 @@ void wxListBox::EnsureVisible(int n)
     GetPeer()->MacScrollTo( n );
 }
 
-void wxListBox::Delete(unsigned int n)
+void wxListBox::DoDeleteOneItem(unsigned int n)
 {
     wxCHECK_RET( IsValid(n), wxT("invalid index in wxListBox::Delete") );
 
     GetPeer()->MacDelete( n );
 }
 
-int wxListBox::DoAppend(const wxString& item)
+int wxListBox::DoInsertItems(const wxArrayStringsAdapter& items,
+                             unsigned int pos,
+                             void **clientData,
+                             wxClientDataType type)
 {
     InvalidateBestSize();
 
-    return GetPeer()->MacAppend( item );
-}
-
-void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
-{
-    Clear();
-
-    unsigned int n = choices.GetCount();
-
-    for ( size_t i = 0; i < n; ++i )
+    GetPeer()->MacInsert( pos, items );
+    const unsigned int count = items.GetCount();
+    if ( clientData )
     {
-        if ( clientData )
-        {
-            Append( choices[i], clientData[i] );
-        }
-        else
-            Append( choices[i] );
+        for (unsigned int i = 0; i < count; ++i)
+            AssignNewItemClientData( pos + i, clientData, i, type );
     }
 
+    return pos + count - 1;
 }
 
 int wxListBox::FindString(const wxString& s, bool bCase) const
@@ -159,7 +152,7 @@ int wxListBox::FindString(const wxString& s, bool bCase) const
     return wxNOT_FOUND;
 }
 
-void wxListBox::Clear()
+void wxListBox::DoClear()
 {
     FreeData();
 }
@@ -188,22 +181,12 @@ void *wxListBox::DoGetItemClientData(unsigned int n) const
     return GetPeer()->MacGetClientData( n );
 }
 
-wxClientData *wxListBox::DoGetItemClientObject(unsigned int n) const
-{
-    return (wxClientData*)DoGetItemClientData( n );
-}
-
 void wxListBox::DoSetItemClientData(unsigned int n, void *clientData)
 {
     wxCHECK_RET( IsValid(n), wxT("invalid index in wxListBox::SetClientData") );
     GetPeer()->MacSetClientData( n , clientData);
 }
 
-void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData)
-{
-    DoSetItemClientData(n, clientData);
-}
-
 // Return number of selections and an array of selected integers
 int wxListBox::GetSelections(wxArrayInt& aSelections) const
 {
@@ -223,15 +206,6 @@ wxString wxListBox::GetString(unsigned int n) const
     return GetPeer()->MacGetString(n);
 }
 
-void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos)
-{
-    wxCHECK_RET( IsValidInsert(pos), wxT("invalid index in wxListBox::InsertItems") );
-
-    InvalidateBestSize();
-
-    GetPeer()->MacInsert( pos, items );
-}
-
 void wxListBox::SetString(unsigned int n, const wxString& s)
 {
     GetPeer()->MacSetString( n, s );
@@ -246,6 +220,7 @@ wxSize wxListBox::DoGetBestSize() const
     {
 #if wxMAC_USE_CORE_GRAPHICS
         wxClientDC dc(const_cast<wxListBox*>(this));
+        dc.SetFont(GetFont());
 #else
         wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef)MacGetTopLevelWindowRef() ) );
 
@@ -288,9 +263,8 @@ wxSize wxListBox::DoGetBestSize() const
 #else
             wLine = ::TextWidth( str.c_str(), 0, str.length() );
 #endif
-
-            lbWidth = wxMax( lbWidth, wLine );
 #endif
+            lbWidth = wxMax( lbWidth, wLine );
         }
 
         // Add room for the scrollbar
@@ -300,10 +274,10 @@ wxSize wxListBox::DoGetBestSize() const
         int cy = 12;
 #if wxMAC_USE_CORE_GRAPHICS
         wxCoord width, height ;
-        dc.GetTextExtent( wxT("X") , &width, &height);
+        dc.GetTextExtent( wxT("XX") , &width, &height);
         int cx = width ;
 #else
-        int cx = ::TextWidth( "X", 0, 1 );
+        int cx = ::TextWidth( "XX", 0, 1 );
 #endif
         lbWidth += cx;
 
@@ -462,7 +436,7 @@ wxMacListBoxItem::~wxMacListBoxItem()
 
 void wxMacListBoxItem::Notification(wxMacDataItemBrowserControl *owner ,
     DataBrowserItemNotification message,
-    DataBrowserItemDataRef itemData ) const
+    DataBrowserItemDataRef WXUNUSED(itemData) ) const
 {
     wxMacDataBrowserListControl *lb = wxDynamicCast(owner,wxMacDataBrowserListControl);