]> git.saurik.com Git - wxWidgets.git/commitdiff
Call Expand on an item's parent chain in EnsureVisible
authorRobert Roebling <robert@roebling.de>
Sat, 20 Dec 2008 15:11:38 +0000 (15:11 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 20 Dec 2008 15:11:38 +0000 (15:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dataview.h
src/common/datavcmn.cpp
src/generic/datavgen.cpp
src/gtk/dataview.cpp
src/osx/carbon/dataview.cpp

index 3f87c82485829d8605efddcf4b480902764c78d9..5718981783391196a8f00ac6d51d685a416fc179 100644 (file)
@@ -26,7 +26,7 @@
 #include "wx/weakref.h"
 
 #if !(defined(__WXGTK20__) || defined(__WXMAC__)) || defined(__WXUNIVERSAL__)
-//#if !(defined(__WXMAC__)) || defined(__WXUNIVERSAL__)
+// #if !(defined(__WXMAC__)) || defined(__WXUNIVERSAL__)
     #define wxHAS_GENERIC_DATAVIEWCTRL
 #endif
 
@@ -717,7 +717,7 @@ public:
     virtual bool IsExpanded( const wxDataViewItem & item ) const = 0;
 
     virtual void EnsureVisible( const wxDataViewItem & item,
-                                const wxDataViewColumn *column = NULL ) = 0;
+                                const wxDataViewColumn *column = NULL );
     virtual void HitTest( const wxPoint & point, wxDataViewItem &item, wxDataViewColumn* &column ) const = 0;
     virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const = 0;
 
@@ -879,7 +879,7 @@ private:
     long    m_min,m_max;
 };
 
-#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(wxMAC)
+#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXMAC__)
 
 // -------------------------------------
 // wxDataViewChoiceRenderer
index 47400107e1de72b4470d474ac8fe7c3a4cdc696c..850772322cc5fa7d314c36ba7d20ddc34bcd99cb 100644 (file)
@@ -22,6 +22,7 @@
 #include "wx/choice.h"
 
 #include "wx/weakref.h"
+#include "wx/vector.h"
 
 #ifndef WX_PRECOMP
     #include "wx/dc.h"
@@ -895,6 +896,30 @@ const wxDataViewModel* wxDataViewCtrlBase::GetModel() const
     return m_model;
 }
 
+void wxDataViewCtrlBase::EnsureVisible( const wxDataViewItem & item,
+                                        const wxDataViewColumn *WXUNUSED(column) )
+{
+    if (!m_model) return;
+
+    wxVector<wxDataViewItem> parentChain;
+    
+    // at first we get all the parents of the selected item
+    wxDataViewItem parent = m_model->GetParent(item);
+    while (parent.IsOk())
+    {
+        parentChain.push_back(parent);
+        parent = m_model->GetParent(parent);
+    }
+    
+    // then we expand the parents, starting at the root
+    while (!parentChain.empty())
+    {
+         Expand(parentChain.back());
+         parentChain.pop_back();
+    }
+}
+
+
 wxDataViewColumn *
 wxDataViewCtrlBase::AppendTextColumn( const wxString &label, unsigned int model_column,
                             wxDataViewCellMode mode, int width, wxAlignment align, int flags )
@@ -1275,7 +1300,7 @@ bool wxDataViewSpinRenderer::GetValue( wxVariant &value ) const
 // wxDataViewChoiceRenderer
 // -------------------------------------
 
-#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(wxMAC)
+#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXMAC__)
 
 wxDataViewChoiceRenderer::wxDataViewChoiceRenderer( const wxArrayString& choices, wxDataViewCellMode mode, int alignment ) :
    wxDataViewCustomRenderer(wxT("string"), mode, alignment )
index cbe48f53dcd3291002af16a29efbb2826b21bc05..8a3cdb48745c0f4265d48e158285961fb77c14cd 100644 (file)
@@ -3659,6 +3659,8 @@ void wxDataViewCtrl::EnsureVisible( int row, int column )
 
 void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataViewColumn * column )
 {
+    wxDataViewCtrlBase::EnsureVisible( item, column );
+  
     m_clientArea->RecalculateDisplay();
 
     int row = m_clientArea->GetRowByItem(item);
index dc998edd3380305c95b7f9df66698452e4e3b276..32bdc03dc4f838d915905af5485ba2581c397885 100644 (file)
@@ -4187,8 +4187,10 @@ void wxDataViewCtrl::UnselectAll()
 }
 
 void wxDataViewCtrl::EnsureVisible(const wxDataViewItem& item,
-                                   const wxDataViewColumn *WXUNUSED(column))
+                                   const wxDataViewColumn *column)
 {
+    wxDataViewCtrlBase::EnsureVisible(item,column);
+
     GtkTreeIter iter;
     iter.user_data = (gpointer) item.GetID();
     GtkTreePath *path = m_internal->get_path( &iter );
index 11ba3ce936dbc5a9145571491a71845501be77b5..bf7479c4cff5157138007d0e37ef5f63e7e22115 100644 (file)
@@ -1183,6 +1183,8 @@ void wxDataViewCtrl::Collapse(wxDataViewItem const& item)
 
 void wxDataViewCtrl::EnsureVisible(wxDataViewItem const& item, wxDataViewColumn const* columnPtr)
 {
+  wxDataViewCtrlBase::EnsureVisible(item,columnPtr);
+
   if (item.IsOk())
   {
     DataBrowserPropertyID propertyID;