diff --git a/docs/changes.txt b/docs/changes.txt index 4beac69e93..80c746a309 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -67,6 +67,7 @@ All (GUI): - Add support for wxAuiManager and wxAuiPaneInfo to XRC (Andrea Zanellato). - Update Scintilla to v3.6.3 (Paul Kulchenko). +- Make wxDataViewCtrl::Expand() expand ancestors in native ports too. wxGTK: diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 781f87dc95..3b8bc71e25 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -705,7 +705,7 @@ public: virtual void SelectAll() = 0; virtual void UnselectAll() = 0; - virtual void Expand( const wxDataViewItem & item ) = 0; + void Expand( const wxDataViewItem & item ); void ExpandAncestors( const wxDataViewItem & item ); virtual void Collapse( const wxDataViewItem & item ) = 0; virtual bool IsExpanded( const wxDataViewItem & item ) const = 0; @@ -747,6 +747,10 @@ protected: virtual void DoSetExpanderColumn() = 0 ; virtual void DoSetIndent() = 0; + // Just expand this item assuming it is already shown, i.e. its parent has + // been already expanded using ExpandAncestors(). + virtual void DoExpand(const wxDataViewItem & item) = 0; + private: // Implementation of the public Set/GetCurrentItem() methods which are only // called in multi selection case (for single selection controls their diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 591ba2fadf..224f90f166 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -236,7 +236,6 @@ public: virtual bool SetRowHeight( int rowHeight ) wxOVERRIDE; - virtual void Expand( const wxDataViewItem & item ) wxOVERRIDE; virtual void Collapse( const wxDataViewItem & item ) wxOVERRIDE; virtual bool IsExpanded( const wxDataViewItem & item ) const wxOVERRIDE; @@ -318,6 +317,8 @@ private: virtual wxDataViewItem DoGetCurrentItem() const wxOVERRIDE; virtual void DoSetCurrentItem(const wxDataViewItem& item) wxOVERRIDE; + virtual void DoExpand(const wxDataViewItem& item) wxOVERRIDE; + void InvalidateColBestWidths(); void InvalidateColBestWidth(int idx); void UpdateColWidths(); diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index f2064218aa..3f246ddfd4 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -161,7 +161,6 @@ public: virtual void EditItem(const wxDataViewItem& item, const wxDataViewColumn *column) wxOVERRIDE; - virtual void Expand( const wxDataViewItem & item ) wxOVERRIDE; virtual void Collapse( const wxDataViewItem & item ) wxOVERRIDE; virtual bool IsExpanded( const wxDataViewItem & item ) const wxOVERRIDE; @@ -190,6 +189,8 @@ protected: virtual void DoSetExpanderColumn() wxOVERRIDE; virtual void DoSetIndent() wxOVERRIDE; + virtual void DoExpand(const wxDataViewItem& item) wxOVERRIDE; + virtual void DoApplyWidgetStyle(GtkRcStyle *style) wxOVERRIDE; private: diff --git a/include/wx/osx/cocoa/dataview.h b/include/wx/osx/cocoa/dataview.h index 65fc99c2b3..f3d613d19d 100644 --- a/include/wx/osx/cocoa/dataview.h +++ b/include/wx/osx/cocoa/dataview.h @@ -447,7 +447,6 @@ public: virtual void Collapse(const wxDataViewItem& item); virtual void EnsureVisible(const wxDataViewItem& item, wxDataViewColumn const* columnPtr); - virtual void Expand(const wxDataViewItem& item); virtual unsigned int GetCount() const; virtual wxRect GetRectangle(const wxDataViewItem& item, wxDataViewColumn const* columnPtr); @@ -490,6 +489,9 @@ public: // other methods (inherited from wxDataViewWidgetImpl) // virtual void DoSetIndent(int indent); + + virtual void DoExpand(const wxDataViewItem& item); + virtual void HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const; diff --git a/include/wx/osx/core/dataview.h b/include/wx/osx/core/dataview.h index 440be5e8e0..788ab42b03 100644 --- a/include/wx/osx/core/dataview.h +++ b/include/wx/osx/core/dataview.h @@ -62,7 +62,6 @@ public: virtual bool Add (wxDataViewItem const& parent, wxDataViewItemArray const& itesm) = 0; // adds a items to the native control virtual void Collapse (wxDataViewItem const& item) = 0; // collapses the passed item in the native control virtual void EnsureVisible(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) = 0; // ensures that the passed item's value in the passed column is visible (column pointer can be NULL) - virtual void Expand (wxDataViewItem const& item) = 0; // expands the passed item in the native control virtual unsigned int GetCount (void) const = 0; // returns the number of items in the native control virtual wxRect GetRectangle (wxDataViewItem const& item, wxDataViewColumn const* columnPtr) = 0; // returns the rectangle that is used by the passed item and column in the native control virtual bool IsExpanded (wxDataViewItem const& item) const = 0; // checks if the passed item is expanded in the native control @@ -104,6 +103,8 @@ public: // other methods // virtual void DoSetIndent (int indent) = 0; // sets the indention in the native control + virtual void DoExpand (wxDataViewItem const& item) = 0; // expands the passed item in the native control + virtual void HitTest (wxPoint const& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const = 0; // return the item and column pointer that contains with the passed point virtual void SetRowHeight(wxDataViewItem const& item, unsigned int height) = 0; // sets the height of the row containg the passed item in the native control virtual void OnSize (void) = 0; // updates the layout of the native control after a size event diff --git a/include/wx/osx/dataview.h b/include/wx/osx/dataview.h index 2f7261cc1f..7d81447ebf 100644 --- a/include/wx/osx/dataview.h +++ b/include/wx/osx/dataview.h @@ -169,7 +169,6 @@ public: virtual void Collapse( const wxDataViewItem& item) wxOVERRIDE; virtual void EnsureVisible(const wxDataViewItem& item, const wxDataViewColumn* columnPtr=NULL) wxOVERRIDE; - virtual void Expand(const wxDataViewItem& item) wxOVERRIDE; virtual bool IsExpanded(const wxDataViewItem & item) const wxOVERRIDE; virtual unsigned int GetCount() const; @@ -271,6 +270,8 @@ protected: virtual void DoSetExpanderColumn() wxOVERRIDE; virtual void DoSetIndent() wxOVERRIDE; + virtual void DoExpand(const wxDataViewItem& item) wxOVERRIDE; + virtual wxSize DoGetBestSize() const wxOVERRIDE; // event handling diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index dc238d62a9..d2ab84197f 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -1166,6 +1166,13 @@ const wxDataViewModel* wxDataViewCtrlBase::GetModel() const return m_model; } +void wxDataViewCtrlBase::Expand(const wxDataViewItem& item) +{ + ExpandAncestors(item); + + DoExpand(item); +} + void wxDataViewCtrlBase::ExpandAncestors( const wxDataViewItem & item ) { if (!m_model) return; @@ -1185,7 +1192,7 @@ void wxDataViewCtrlBase::ExpandAncestors( const wxDataViewItem & item ) // then we expand the parents, starting at the root while (!parentChain.empty()) { - Expand(parentChain.back()); + DoExpand(parentChain.back()); parentChain.pop_back(); } } diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index e1a3861b89..41f4403240 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -5273,10 +5273,8 @@ int wxDataViewCtrl::GetRowByItem( const wxDataViewItem & item ) const return m_clientArea->GetRowByItem( item ); } -void wxDataViewCtrl::Expand( const wxDataViewItem & item ) +void wxDataViewCtrl::DoExpand( const wxDataViewItem & item ) { - ExpandAncestors( item ); - int row = m_clientArea->GetRowByItem( item ); if (row != -1) m_clientArea->Expand(row); diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 2e73aae7b2..8be64c4633 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -4820,7 +4820,7 @@ wxDataViewColumn *wxDataViewCtrl::GetSortingColumn() const return m_internal->GetDataViewSortColumn(); } -void wxDataViewCtrl::Expand( const wxDataViewItem & item ) +void wxDataViewCtrl::DoExpand( const wxDataViewItem & item ) { GtkTreeIter iter; iter.user_data = item.GetID(); diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 022fc779d4..61f493874a 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -2156,7 +2156,7 @@ void wxCocoaDataViewControl::EnsureVisible(const wxDataViewItem& item, const wxD } } -void wxCocoaDataViewControl::Expand(const wxDataViewItem& item) +void wxCocoaDataViewControl::DoExpand(const wxDataViewItem& item) { [m_OutlineView expandItem:[m_DataSource getDataViewItemFromBuffer:item]]; } diff --git a/src/osx/dataview_osx.cpp b/src/osx/dataview_osx.cpp index df8d4eb5fb..926bf972f7 100644 --- a/src/osx/dataview_osx.cpp +++ b/src/osx/dataview_osx.cpp @@ -506,9 +506,9 @@ void wxDataViewCtrl::EnsureVisible(wxDataViewItem const& item, wxDataViewColumn } } -void wxDataViewCtrl::Expand(wxDataViewItem const& item) +void wxDataViewCtrl::DoExpand(wxDataViewItem const& item) { - return GetDataViewPeer()->Expand(item); + return GetDataViewPeer()->DoExpand(item); } bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const