]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/dataview.cpp
pass wxIntPtr, not wxUIntPtr, to wxListCtrl::SortItems() callback as it's more compat...
[wxWidgets.git] / src / osx / carbon / dataview.cpp
index dd3cebff16042060f4c128ac85773d36d14efb00..997d24de1ef3fe7dc56f3e4c87d5eac11dc29530 100644 (file)
@@ -133,7 +133,8 @@ static bool InitializeColumnDescription(DataBrowserListViewColumnDesc& columnDes
   }
   if (columnPtr->IsSortable())
     columnDescription.propertyDesc.propertyFlags |= kDataBrowserListViewSortableColumn;
-  if (columnPtr->GetRenderer()->GetMode() == wxDATAVIEW_CELL_EDITABLE)
+  if ((columnPtr->GetRenderer()->GetMode() == wxDATAVIEW_CELL_EDITABLE) || 
+      (columnPtr->GetRenderer()->GetMode() == wxDATAVIEW_CELL_ACTIVATABLE))
     columnDescription.propertyDesc.propertyFlags |= kDataBrowserPropertyIsEditable;
   if ((columnDescription.propertyDesc.propertyType == kDataBrowserCustomType) ||
       (columnDescription.propertyDesc.propertyType == kDataBrowserDateTimeType) ||
@@ -489,7 +490,7 @@ void wxDataViewRenderer::SetMode(wxDataViewCellMode mode)
         DataBrowserPropertyFlags flags;
 
         verify_noerr(macDataViewListCtrlPtr->GetPropertyFlags(dataViewColumnPtr->GetPropertyID(),&flags));
-        if (mode == wxDATAVIEW_CELL_EDITABLE)
+        if ((mode == wxDATAVIEW_CELL_EDITABLE) || (mode == wxDATAVIEW_CELL_ACTIVATABLE))
           flags |= kDataBrowserPropertyIsEditable;
         else
           flags &= ~kDataBrowserPropertyIsEditable;
@@ -620,7 +621,7 @@ IMPLEMENT_CLASS(wxDataViewBitmapRenderer,wxDataViewRenderer)
 // ---------------------------------------------------------
 // wxDataViewIconTextRenderer
 // ---------------------------------------------------------
-wxDataViewIconTextRenderer::wxDataViewIconTextRenderer(wxString const& varianttype, wxDataViewCellMode mode, int align)
+wxDataViewIconTextRenderer::wxDataViewIconTextRenderer(wxString const& varianttype, wxDataViewCellMode mode, int WXUNUSED(align))
                            :wxDataViewRenderer(varianttype,mode)
 {
 }
@@ -652,7 +653,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxDataViewIconTextRenderer,wxDataViewRenderer)
 // ---------------------------------------------------------
 // wxDataViewToggleRenderer
 // ---------------------------------------------------------
-wxDataViewToggleRenderer::wxDataViewToggleRenderer(wxString const& varianttype, wxDataViewCellMode mode, int align)
+wxDataViewToggleRenderer::wxDataViewToggleRenderer(wxString const& varianttype, wxDataViewCellMode mode, int WXUNUSED(align))
                          :wxDataViewRenderer(varianttype,mode)
 {
 }
@@ -673,7 +674,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxDataViewToggleRenderer,wxDataViewRenderer)
 // ---------------------------------------------------------
 // wxDataViewProgressRenderer
 // ---------------------------------------------------------
-wxDataViewProgressRenderer::wxDataViewProgressRenderer(wxString const& label, wxString const& varianttype, wxDataViewCellMode mode, int align)
+wxDataViewProgressRenderer::wxDataViewProgressRenderer(wxString const& WXUNUSED(label), wxString const& varianttype, wxDataViewCellMode mode, int align)
                            :wxDataViewRenderer(varianttype,mode,align)
 {
 }
@@ -1027,14 +1028,22 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos,
   return true;
 }
 
+wxSize wxDataViewCtrl::DoGetBestSize() const
+{
+    wxSize best = wxControl::DoGetBestSize();
+    best.y = 80;
+    
+    return best;
+}
+
 /*static*/
-wxVisualAttributes wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant variant)
+wxVisualAttributes wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
     wxVisualAttributes attr;
 
     attr.colFg = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT );
     attr.colBg = wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX );
-    attr.font.MacCreateFromThemeFont(kThemeViewsFont);
+    //attr.font.CreateSystemFont(wxOSX_SYSTEM_FONT_VIEWS);
 
     return attr;
 }
@@ -1051,12 +1060,12 @@ bool wxDataViewCtrl::AssociateModel(wxDataViewModel* model)
 
 bool wxDataViewCtrl::AppendColumn(wxDataViewColumn* columnPtr)
 {
-   return InsertColumn( kDataBrowserListViewAppendColumn, columnPtr );
+   return wxDataViewCtrl::InsertColumn( GetColumnCount(), columnPtr );
 }
 
 bool wxDataViewCtrl::PrependColumn(wxDataViewColumn* columnPtr)
 {
-   return InsertColumn( 0, columnPtr );
+   return wxDataViewCtrl::InsertColumn( 0, columnPtr );
 }
 
 bool wxDataViewCtrl::InsertColumn(unsigned int pos, wxDataViewColumn* columnPtr)
@@ -1083,7 +1092,7 @@ bool wxDataViewCtrl::InsertColumn(unsigned int pos, wxDataViewColumn* columnPtr)
  // full column variable initialization:
   columnPtr->SetPropertyID(NewPropertyID);
  // add column to wxWidget's internal structure:
-  wxCHECK_MSG(this->wxDataViewCtrlBase::AppendColumn(columnPtr) &&
+  wxCHECK_MSG(this->wxDataViewCtrlBase::InsertColumn(pos,columnPtr) &&
               m_ColumnPointers.insert(ColumnPointerHashMapType::value_type(NewPropertyID,columnPtr)).second,false,_("Could not add column to internal structures."));
  // create a column description and add column to the native control:
   wxCHECK_MSG(::InitializeColumnDescription(columnDescription,columnPtr,NewPropertyID,title),                 false,_("Column description could not be initialized."));
@@ -1296,7 +1305,7 @@ int wxDataViewCtrl::GetSelections(wxDataViewItemArray& sel) const
   return static_cast<int>(NoOfSelectedItems);
 }
 
-void wxDataViewCtrl::HitTest(wxPoint const& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const
+void wxDataViewCtrl::HitTest(wxPoint const& WXUNUSED(point), wxDataViewItem& item, wxDataViewColumn*& columnPtr) const
 {
   item = wxDataViewItem();
   columnPtr = NULL;
@@ -1460,6 +1469,56 @@ void wxDataViewCtrl::DoSetIndent()
 }
 
 // event handling:
+void wxDataViewCtrl::OnMouse(wxMouseEvent& event)
+{
+    event.Skip();
+    
+    if (GetModel() == NULL)
+        return;
+
+    wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast<wxMacDataViewDataBrowserListViewControlPointer>(m_peer));
+
+    int NoOfChildren;
+    wxDataViewItemArray items;
+    NoOfChildren = GetModel()->GetChildren( wxDataViewItem(), items);
+    if (NoOfChildren == 0)
+       return;
+    wxDataViewItem firstChild = items[0];
+
+    UInt16 headerHeight = 0;
+    MacDataViewListCtrlPtr->GetHeaderButtonHeight(&headerHeight);
+  
+    
+    if (event.GetY() < headerHeight)
+    {
+       unsigned int col_count = GetColumnCount();
+       unsigned int col;
+       for (col = 0; col < col_count; col++)
+       {
+           wxDataViewColumn *column = GetColumn( col );
+           if (column->IsHidden())
+              continue;
+           
+           Rect itemrect;
+           ::GetDataBrowserItemPartBounds( MacDataViewListCtrlPtr->GetControlRef(), 
+              reinterpret_cast<DataBrowserItemID>(firstChild.GetID()), column->GetPropertyID(),
+              kDataBrowserPropertyEnclosingPart, &itemrect );
+           
+           if (abs( event.GetX() - itemrect.right) < 3)
+           {
+               if (column->GetFlags() & wxDATAVIEW_COL_RESIZABLE)
+                  SetCursor( wxCursor( wxCURSOR_SIZEWE ) );
+               else
+                  SetCursor( *wxSTANDARD_CURSOR );
+               return;
+           }
+       }
+       
+    }
+    
+    SetCursor( *wxSTANDARD_CURSOR );
+}
+
 void wxDataViewCtrl::OnSize(wxSizeEvent& event)
 {
   unsigned int const NoOfColumns = this->GetColumnCount();
@@ -1497,6 +1556,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDataViewCtrl,wxDataViewCtrlBase)
 
 BEGIN_EVENT_TABLE(wxDataViewCtrl,wxDataViewCtrlBase)
   EVT_SIZE(wxDataViewCtrl::OnSize)
+  EVT_MOTION(wxDataViewCtrl::OnMouse)
 END_EVENT_TABLE()
 
 #endif // !wxUSE_GENERICDATAVIEWCTRL