]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/listctrl_mac.cpp
reworking event handling to redirect to c++ virtual functions
[wxWidgets.git] / src / osx / carbon / listctrl_mac.cpp
index 16e432606d70493925b5ea99c5c9c4713c5be96c..655502d3a9b434106e96f05369d4299e151b91a1 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/mac/listctrl_mac.cpp
+// Name:        src/osx/listctrl_mac.cpp
 // Purpose:     wxListCtrl
 // Author:      Julian Smart
 // Modified by: Agron Selimaj
@@ -176,7 +176,7 @@ static pascal OSStatus wxMacListCtrlEventHandler( EventHandlerCallRef handler ,
 
 DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacListCtrlEventHandler )
 
-class wxMacListCtrlItem : public wxMacListBoxItem
+class wxMacListCtrlItem : public wxMacDataItem
 {
 public:
     wxMacListCtrlItem();
@@ -214,8 +214,6 @@ public:
 
     // create a list item (can be a subclass of wxMacListBoxItem)
 
-    virtual wxMacDataItem* CreateItem();
-
     virtual void MacInsertItem( unsigned int n, wxListItem* item );
     virtual void MacSetColumnInfo( unsigned int row, unsigned int column, wxListItem* item );
     virtual void MacGetColumnInfo( unsigned int row, unsigned int column, wxListItem& item );
@@ -517,10 +515,9 @@ END_EVENT_TABLE()
 // implementation
 // ============================================================================
 
-wxMacListControl* wxListCtrl::GetPeer() const
+wxMacDataBrowserListCtrlControl* wxListCtrl::GetListPeer() const
 {
-    wxMacDataBrowserListCtrlControl *lb = wxDynamicCast(m_peer,wxMacDataBrowserListCtrlControl);
-    return lb ? wx_static_cast(wxMacListControl*,lb) : 0 ;
+    return dynamic_cast<wxMacDataBrowserListCtrlControl*> ( GetPeer() );
 }
 
 // ----------------------------------------------------------------------------
@@ -894,7 +891,7 @@ bool wxListCtrl::SetBackgroundColour(const wxColour& colour)
     return rv;
 }
 
-wxColour wxListCtrl::GetBackgroundColour()
+wxColour wxListCtrl::GetBackgroundColour() const
 {
     if (m_genericImpl)
         return m_genericImpl->GetBackgroundColour();
@@ -2433,11 +2430,6 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner ,
     // we want to depend on as little as possible to make sure tear-down of controls is safe
     if ( message == kDataBrowserItemRemoved)
     {
-        if ( lb != NULL && lb->GetClientDataType() == wxClientData_Object )
-        {
-            delete (wxClientData*) (m_data);
-        }
-
         delete this;
         return;
     }
@@ -3115,11 +3107,12 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
             wxMacListCtrlItem* otherItem = (wxMacListCtrlItem*)itemTwoID;
 
             itemOrder = item->GetOrder();
-            otherItemOrder = item->GetOrder();
+            otherItemOrder = otherItem->GetOrder();
 
             wxListCtrlCompare func = list->GetCompareFunc();
             if (func != NULL)
             {
+
                 long item1 = -1;
                 long item2 = -1;
                 if (item && item->HasColumnInfo(0))
@@ -3169,7 +3162,7 @@ void wxMacDataBrowserListCtrlControl::MacSetColumnInfo( unsigned int row, unsign
     wxASSERT_MSG( dataItem, _T("could not obtain wxMacDataItem for row in MacSetColumnInfo. Is row a valid wxListCtrl row?") );
     if (item)
     {
-        wxMacListCtrlItem* listItem = wx_static_cast(wxMacListCtrlItem*,dataItem);
+        wxMacListCtrlItem* listItem = static_cast<wxMacListCtrlItem *>(dataItem);
         bool hasInfo = listItem->HasColumnInfo( column );
         listItem->SetColumnInfo( column, item );
         listItem->SetOrder(row);
@@ -3212,7 +3205,7 @@ void wxMacDataBrowserListCtrlControl::MacGetColumnInfo( unsigned int row, unsign
     // CS should this guard against dataItem = 0 ? , as item is not a pointer if (item) is not appropriate
     //if (item)
     {
-        wxMacListCtrlItem* listItem =wx_static_cast(wxMacListCtrlItem*,dataItem);
+        wxMacListCtrlItem* listItem = static_cast<wxMacListCtrlItem *>(dataItem);
 
         if (!listItem->HasColumnInfo( column ))
             return;
@@ -3245,18 +3238,14 @@ void wxMacDataBrowserListCtrlControl::MacGetColumnInfo( unsigned int row, unsign
         }
     }
 }
-
 void wxMacDataBrowserListCtrlControl::MacInsertItem( unsigned int n, wxListItem* item )
 {
-    wxMacDataItemBrowserControl::MacInsert(n, item->GetText());
+    
+    wxMacDataItemBrowserControl::MacInsert(n, new wxMacListCtrlItem() );
     MacSetColumnInfo(n, 0, item);
 }
 
-wxMacDataItem* wxMacDataBrowserListCtrlControl::CreateItem()
-{
-    return new wxMacListCtrlItem();
-}
-
 wxMacListCtrlItem::wxMacListCtrlItem()
 {
     m_rowItems = wxListItemList();
@@ -3278,9 +3267,10 @@ void wxMacListCtrlItem::SetColumnImageValue( unsigned int column, int imageIndex
 
 wxString wxMacListCtrlItem::GetColumnTextValue( unsigned int column )
 {
+/* TODO CHECK REMOVE
     if ( column == 0 )
         return GetLabel();
-
+*/
     if ( HasColumnInfo(column) )
         return GetColumnInfo(column)->GetText();
 
@@ -3292,9 +3282,11 @@ void wxMacListCtrlItem::SetColumnTextValue( unsigned int column, const wxString&
     if ( HasColumnInfo(column) )
         GetColumnInfo(column)->SetText(text);
 
+/* TODO CHECK REMOVE
     // for compatibility with superclass APIs
     if ( column == 0 )
         SetLabel(text);
+*/
 }
 
 wxListItem* wxMacListCtrlItem::GetColumnInfo( unsigned int column )