From 739a839903d6017270e085b7308eda71934efa64 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 16 Dec 2008 21:23:55 +0000 Subject: [PATCH] Added wxDataViewCtrl::IsExpanded(item) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataview.h | 1 + include/wx/generic/dataview.h | 1 + include/wx/gtk/dataview.h | 2 ++ include/wx/osx/carbon/dataview.h | 31 ++++++++++++++++--------------- interface/wx/dataview.h | 9 ++++++++- src/generic/datavgen.cpp | 27 +++++++++++++++++++++++++++ src/gtk/dataview.cpp | 9 +++++++++ src/osx/carbon/dataview.cpp | 12 ++++++++++++ 8 files changed, 76 insertions(+), 16 deletions(-) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 062ad743e2..be237cae1f 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -713,6 +713,7 @@ public: virtual void Expand( const wxDataViewItem & item ) = 0; virtual void Collapse( const wxDataViewItem & item ) = 0; + virtual bool IsExpanded( const wxDataViewItem & item ) const = 0; virtual void EnsureVisible( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) = 0; diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index db9202eea9..43f6fb9194 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -446,6 +446,7 @@ public: virtual void Expand( const wxDataViewItem & item ); virtual void Collapse( const wxDataViewItem & item ); + virtual bool IsExpanded( const wxDataViewItem & item ) const; virtual void SetFocus(); diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index bb39f3e379..6580aee732 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -429,6 +429,8 @@ public: virtual void Expand( const wxDataViewItem & item ); virtual void Collapse( const wxDataViewItem & item ); + virtual bool IsExpanded( const wxDataViewItem & item ) const; + static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); diff --git a/include/wx/osx/carbon/dataview.h b/include/wx/osx/carbon/dataview.h index 19546e2a6d..fa67af0ae5 100644 --- a/include/wx/osx/carbon/dataview.h +++ b/include/wx/osx/carbon/dataview.h @@ -450,8 +450,8 @@ public: { this->Init(); } - wxDataViewCtrl(wxWindow *parent, wxWindowID id, wxPoint const& pos = wxDefaultPosition, wxSize const& size = wxDefaultSize, long style = 0, - wxValidator const& validator = wxDefaultValidator) + wxDataViewCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator) { this->Init(); this->Create(parent, id, pos, size, style, validator ); @@ -460,8 +460,8 @@ public: ~wxDataViewCtrl(); // explicit control creation - bool Create(wxWindow *parent, wxWindowID id, wxPoint const& pos=wxDefaultPosition, wxSize const& size=wxDefaultSize, long style=0, - wxValidator const& validator=wxDefaultValidator); + bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize, long style=0, + const wxValidator& validator=wxDefaultValidator); virtual wxControl* GetMainWindow() // should disappear as it is not of any use for the native implementation { @@ -473,34 +473,35 @@ public: virtual bool AppendColumn(wxDataViewColumn* columnPtr); virtual bool PrependColumn(wxDataViewColumn* columnPtr); - virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col ); + virtual bool InsertColumn(unsigned int pos, wxDataViewColumn *col); virtual bool ClearColumns(); virtual bool DeleteColumn(wxDataViewColumn* columnPtr); virtual wxDataViewColumn* GetColumn(unsigned int pos) const; virtual unsigned int GetColumnCount() const; - virtual int GetColumnPosition(wxDataViewColumn const* columnPtr) const; + virtual int GetColumnPosition(const wxDataViewColumn* 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 void Collapse( const wxDataViewItem& item); + virtual void EnsureVisible(const wxDataViewItem& item, const wxDataViewColumn* columnPtr=NULL); + virtual void Expand(const wxDataViewItem& item); + virtual bool IsExpanded(const wxDataViewItem & item) const; virtual wxDataViewColumn* GetSortingColumn() const; virtual unsigned int GetCount() const; - virtual wxRect GetItemRect(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) const; + virtual wxRect GetItemRect(const wxDataViewItem& item, const wxDataViewColumn* columnPtr) const; virtual wxDataViewItem GetSelection() const; virtual int GetSelections(wxDataViewItemArray& sel) const; - virtual void HitTest(wxPoint const& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const; + virtual void HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const; - virtual bool IsSelected(wxDataViewItem const& item) const; + virtual bool IsSelected(const wxDataViewItem& item) const; virtual void SelectAll(); - virtual void Select(wxDataViewItem const& item); - virtual void SetSelections(wxDataViewItemArray const& sel); + virtual void Select(const wxDataViewItem& item); + virtual void SetSelections(const wxDataViewItemArray& sel); - virtual void Unselect(wxDataViewItem const& item); + virtual void Unselect(const wxDataViewItem& item); virtual void UnselectAll(); // diff --git a/interface/wx/dataview.h b/interface/wx/dataview.h index 22c00f4efe..9e3f259f5f 100644 --- a/interface/wx/dataview.h +++ b/interface/wx/dataview.h @@ -946,6 +946,13 @@ public: virtual void HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& col) const; + /** + Return @true if the item is expanded. + + Currently not supported by OS X. + */ + virtual bool IsExpanded(const wxDataViewItem& item) const; + /** Return @true if the item is selected. */ @@ -1532,7 +1539,7 @@ enum wxDataViewColumnFlags @class wxDataViewColumn This class represents a column in a wxDataViewCtrl. - One wxDataViewColumn is bound to one column in the data model, to which the + One wxDataViewColumn is bound to one column in the data model to which the wxDataViewCtrl has been associated. An instance of wxDataViewRenderer is used by this class to render its data. diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 21483c4910..deda154a48 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -483,6 +483,7 @@ public: void Expand( unsigned int row ) { OnExpanding( row ); } void Collapse( unsigned int row ) { OnCollapsing( row ); } + bool IsExpanded( unsigned int row ) const; private: wxDataViewTreeNode * GetTreeNodeByRow( unsigned int row ) const; //We did not need this temporarily @@ -2411,6 +2412,23 @@ wxDataViewEvent wxDataViewMainWindow::SendExpanderEvent( wxEventType type, const return le; } + +bool wxDataViewMainWindow::IsExpanded( unsigned int row ) const +{ + if (IsVirtualList()) + return false; + + wxDataViewTreeNode * node = GetTreeNodeByRow(row); + if (!node) + return false; + + if (!node->HasChildren()) + return false; + + return node->IsOpen(); +} + + void wxDataViewMainWindow::OnExpanding( unsigned int row ) { if (IsVirtualList()) @@ -3685,6 +3703,15 @@ void wxDataViewCtrl::Collapse( const wxDataViewItem & item ) m_clientArea->Collapse(row); } +bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const +{ + int row = m_clientArea->GetRowByItem( item ); + if (row != -1) + return m_clientArea->IsExpanded(row); + return false; +} + + #endif // !wxUSE_GENERICDATAVIEWCTRL diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index eca69982ef..75849f7fab 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -4013,6 +4013,15 @@ void wxDataViewCtrl::Collapse( const wxDataViewItem & item ) gtk_tree_path_free( path ); } +bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const +{ + GtkTreeIter iter; + iter.user_data = item.GetID(); + GtkTreePath *path = m_internal->get_path( &iter ); + gtk_tree_view_row_expanded( GTK_TREE_VIEW(m_treeview), path ); + gtk_tree_path_free( path ); +} + wxDataViewItem wxDataViewCtrl::GetSelection() const { GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) ); diff --git a/src/osx/carbon/dataview.cpp b/src/osx/carbon/dataview.cpp index ec8ae3baef..4da4cb3efb 100644 --- a/src/osx/carbon/dataview.cpp +++ b/src/osx/carbon/dataview.cpp @@ -1204,6 +1204,18 @@ void wxDataViewCtrl::Expand(wxDataViewItem const& item) MacDataViewListCtrlPtr->OpenContainer(reinterpret_cast(item.GetID())); } +bool wxDataViewCtrl::IsExpanded( const wxDataViewItem & item ) const +{ + if (item.IsOk()) + { + wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast(m_peer)); + + // TODO ??? + // This doesn't seem to be supported + } + return false; +} + wxDataViewColumn* wxDataViewCtrl::GetSortingColumn() const { DataBrowserPropertyID propertyID; -- 2.47.2