From 6d9ecc870ac0240b625c7a1315d2091a0f8af7d3 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Thu, 13 Sep 2007 21:23:48 +0000 Subject: [PATCH] wxDataViewCtrl patch from Hartwig git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataview.h | 2 +- include/wx/mac/carbon/dataview.h | 11 +++++++--- src/mac/carbon/databrow.cpp | 20 ++++++++++++++---- src/mac/carbon/dataview.cpp | 35 ++++++++++++++++++++++++-------- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index d00876f06c..4c903cd090 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -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(m_model_column); } wxDataViewCtrl *GetOwner() { return m_owner; } wxDataViewRenderer* GetRenderer() { return m_renderer; } diff --git a/include/wx/mac/carbon/dataview.h b/include/wx/mac/carbon/dataview.h index 2de8f843a9..b6b22b356f 100644 --- a/include/wx/mac/carbon/dataview.h +++ b/include/wx/mac/carbon/dataview.h @@ -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; diff --git a/src/mac/carbon/databrow.cpp b/src/mac/carbon/databrow.cpp index e3e4610a48..4902c5d72a 100644 --- a/src/mac/carbon/databrow.cpp +++ b/src/mac/carbon/databrow.cpp @@ -985,8 +985,23 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da break; case kDataBrowserUserStateChanged: { + // variable definitions and initialization: DataBrowserPropertyID propertyID; - + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly")); + // update column widths: + for (size_t i=0; iGetColumnCount(); ++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(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) || diff --git a/src/mac/carbon/dataview.cpp b/src/mac/carbon/dataview.cpp index 9e475ea665..c21aa0f8a3 100644 --- a/src/mac/carbon/dataview.cpp +++ b/src/mac/carbon/dataview.cpp @@ -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(this->m_peer)); + + wxCHECK_MSG(MacDataViewListCtrlPtr->GetColumnIndex(columnPtr->GetPropertyID(),&Position) == noErr,-1,_("Could not determine column's position")); + return static_cast(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(item.GetID())); } /* wxDataViewCtrl::Expand(wxDataViewItem const&) */ +wxDataViewColumn* wxDataViewCtrl::GetSortingColumn(void) const +{ + DataBrowserPropertyID propertyID; + + wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast(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; -- 2.47.2