]> git.saurik.com Git - wxWidgets.git/commitdiff
wxDataViewCtrl patch from Hartwig
authorRobert Roebling <robert@roebling.de>
Thu, 13 Sep 2007 21:23:48 +0000 (21:23 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 13 Sep 2007 21:23:48 +0000 (21:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dataview.h
include/wx/mac/carbon/dataview.h
src/mac/carbon/databrow.cpp
src/mac/carbon/dataview.cpp

index d00876f06c038ef856d3d5a075f5d2f7f520c8f3..4c903cd090109cc77c605df4fe1ac6c6de823e54 100644 (file)
@@ -407,7 +407,7 @@ public:
     virtual bool IsSortOrderAscending() const = 0;
 
     const wxBitmap &GetBitmap() const       { return m_bitmap; }
-    unsigned int GetModelColumn() const     { return m_model_column; }
+    unsigned int GetModelColumn() const     { return static_cast<unsigned int>(m_model_column); }
 
     wxDataViewCtrl *GetOwner()              { return m_owner; }
     wxDataViewRenderer* GetRenderer()       { return m_renderer; }
index 2de8f843a91e0cf6fe00a817b8d6eba914ebc1a3..b6b22b356f795583f5fb92c9949eec8422a2c92b 100644 (file)
@@ -179,7 +179,7 @@ public:
     return false;
   }
 
-  virtual bool StartEditing(const wxDataViewItem &WXUNUSED(item), wxRect WXUNUSED(labelRect)) 
+  virtual bool StartEditing(wxDataViewItem const& WXUNUSED(item), wxRect WXUNUSED(labelRect)) 
   {
     return false;
   }
@@ -472,6 +472,10 @@ public:
   {
     this->m_propertyID = newID;
   }
+  void SetWidthVariable(int NewWidth)
+  {
+    this->m_width = NewWidth;
+  }
 
 protected:
 private:
@@ -530,13 +534,14 @@ public:
   virtual bool DeleteColumn(wxDataViewColumn* columnPtr);
   virtual wxDataViewColumn* GetColumn(unsigned int pos) const;
   virtual unsigned int GetColumnCount(void) const;
-    virtual int GetColumnPosition( const wxDataViewColumn *column ) const;
-    virtual wxDataViewColumn *GetSortingColumn() const;
+  virtual int GetColumnPosition(wxDataViewColumn const* columnPtr) const;
 
   virtual void Collapse(wxDataViewItem const& item);
   virtual void EnsureVisible(wxDataViewItem const& item, wxDataViewColumn const* columnPtr=NULL);
   virtual void Expand(wxDataViewItem const& item);
   
+  virtual wxDataViewColumn* GetSortingColumn(void) const;
+
   virtual unsigned int GetCount(void) const;
   virtual wxRect GetItemRect(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) const;
   virtual wxDataViewItem GetSelection(void) const;
index e3e4610a480a5b7cba811d84a81e50aa81ed59ad..4902c5d72ace1507e312bf9d6e94ead10a5e7dc8 100644 (file)
@@ -985,8 +985,23 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
       break;
     case kDataBrowserUserStateChanged:
       {
+       // variable definitions and initialization:
         DataBrowserPropertyID propertyID;
-        
+        wxDataViewCtrl*       dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
+
+        wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly"));
+       // update column widths:
+        for (size_t i=0; i<dataViewCtrlPtr->GetColumnCount(); ++i)
+        {
+         // constant definition for abbreviational purposes:
+          wxDataViewColumn* const columnPtr = dataViewCtrlPtr->GetColumn(i);
+         // variable definition:
+          UInt16 columnWidth;
+          
+          wxCHECK_RET(this->GetColumnWidth(columnPtr->GetPropertyID(),&columnWidth) == noErr,_("Column width could not be determined"));
+          columnPtr->SetWidthVariable(columnWidth);
+        } /* for */
+       // update order status:
         if ((this->GetSortProperty(&propertyID) == noErr) && (propertyID >= kMinPropertyID))
         {
           DataBrowserSortOrder            sortOrder;
@@ -996,9 +1011,6 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
           {
            // variable definition and initialization:
             wxDataViewColumn* columnPtr;
-            wxDataViewCtrl*   dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
-
-            wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data vie wcontrol not set correctly."));
             columnPtr = dataViewCtrlPtr->GetColumn(columnIndex);
            // check if the sort order has changed:
             if (  columnPtr->IsSortOrderAscending()  && (sortOrder == kDataBrowserOrderDecreasing) ||
index 9e475ea665705625f0d7930543b1c62a764e62e0..c21aa0f8a3b6defadf26c900121de9d9bc2c4feb 100644 (file)
@@ -644,6 +644,7 @@ void wxDataViewColumn::SetSortOrder(bool ascending)
       else
         headerDescription.initialOrder = kDataBrowserOrderDecreasing;
       verify_noerr(macDataViewListCtrlPtr->SetHeaderDesc(this->GetPropertyID(),&headerDescription));
+      macDataViewListCtrlPtr->SetSortProperty(this->GetPropertyID());
     } /* if */
   } /* if */
 } /* wxDataViewColumn::SetSortOrder(bool) */
@@ -890,15 +891,20 @@ unsigned int wxDataViewCtrl::GetColumnCount(void) const
   return this->m_ColumnPointers.size();
 } /* wxDataViewCtrl::GetColumnCount(void) const */
 
-int wxDataViewCtrl::GetColumnPosition( const wxDataViewColumn *column ) const
+int wxDataViewCtrl::GetColumnPosition(wxDataViewColumn const* columnPtr) const
 {
-    return -1;
-}
-
-wxDataViewColumn *wxDataViewCtrl::GetSortingColumn() const
-{
-    return NULL;
-}
+  if (columnPtr != NULL)
+  {
+   // variable definition and initialization:
+    DataBrowserTableViewColumnIndex                Position;
+    wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast<wxMacDataViewDataBrowserListViewControlPointer>(this->m_peer));
+    
+    wxCHECK_MSG(MacDataViewListCtrlPtr->GetColumnIndex(columnPtr->GetPropertyID(),&Position) == noErr,-1,_("Could not determine column's position"));
+    return static_cast<int>(Position);
+  } /* if */
+  else
+    return wxNOT_FOUND;
+} /* wxDataViewCtrl::GetColumnPosition(wxDataViewColumn const*) const */
 
 void wxDataViewCtrl::Collapse(wxDataViewItem const& item)
 {
@@ -932,6 +938,19 @@ void wxDataViewCtrl::Expand(wxDataViewItem const& item)
   MacDataViewListCtrlPtr->OpenContainer(reinterpret_cast<DataBrowserItemID>(item.GetID()));
 } /* wxDataViewCtrl::Expand(wxDataViewItem const&) */
 
+wxDataViewColumn* wxDataViewCtrl::GetSortingColumn(void) const
+{
+  DataBrowserPropertyID propertyID;
+
+  wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast<wxMacDataViewDataBrowserListViewControlPointer>(this->m_peer));
+  
+  
+  if (MacDataViewListCtrlPtr->GetSortProperty(&propertyID) == noErr)
+    return this->GetColumnPtr(propertyID);
+  else
+    return NULL;
+} /* wxDataViewCtrl::GetSortingColumn(void) const */
+
 unsigned int wxDataViewCtrl::GetCount(void) const
 {
   ItemCount noOfItems;