X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7448d67c492d4e397e6de9d25955cab074ce6c14..844cada1622b2923754493a4c8eb91b82232093e:/src/common/datavcmn.cpp diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index c0850cbf16..949ffa233f 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -22,6 +22,7 @@ #include "wx/choice.h" #include "wx/weakref.h" +#include "wx/vector.h" #ifndef WX_PRECOMP #include "wx/dc.h" @@ -832,64 +833,18 @@ void wxDataViewEditorCtrlEvtHandler::OnKillFocus( wxFocusEvent &event ) // wxDataViewColumnBase // --------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxDataViewColumnBase, wxObject) - -wxDataViewColumnBase::wxDataViewColumnBase(const wxString& WXUNUSED(title), - wxDataViewRenderer *renderer, - unsigned int model_column, - int WXUNUSED(width), - wxAlignment WXUNUSED(align), - int WXUNUSED(flags)) +void wxDataViewColumnBase::Init(wxDataViewRenderer *renderer, + unsigned int model_column) { m_renderer = renderer; m_model_column = model_column; m_owner = NULL; m_renderer->SetOwner( (wxDataViewColumn*) this ); - - // NOTE: the wxDataViewColumn's ctor must store the width, align, flags - // parameters inside the native control! -} - -wxDataViewColumnBase::wxDataViewColumnBase(const wxBitmap& bitmap, - wxDataViewRenderer *renderer, - unsigned int model_column, - int WXUNUSED(width), - wxAlignment WXUNUSED(align), - int WXUNUSED(flags) ) -{ - m_renderer = renderer; - m_model_column = model_column; - m_bitmap = bitmap; - m_owner = NULL; - m_renderer->SetOwner( (wxDataViewColumn*) this ); } wxDataViewColumnBase::~wxDataViewColumnBase() { - if (m_renderer) - delete m_renderer; -} - -int wxDataViewColumnBase::GetFlags() const -{ - int ret = 0; - - if (IsSortable()) - ret |= wxDATAVIEW_COL_SORTABLE; - if (IsResizeable()) - ret |= wxDATAVIEW_COL_RESIZABLE; - if (IsHidden()) - ret |= wxDATAVIEW_COL_HIDDEN; - - return ret; -} - -void wxDataViewColumnBase::SetFlags(int flags) -{ - SetSortable((flags & wxDATAVIEW_COL_SORTABLE) != 0); - SetResizeable((flags & wxDATAVIEW_COL_RESIZABLE) != 0); - SetHidden((flags & wxDATAVIEW_COL_HIDDEN) != 0); - SetReorderable((flags & wxDATAVIEW_COL_REORDERABLE) != 0); + delete m_renderer; } // --------------------------------------------------------- @@ -941,6 +896,30 @@ const wxDataViewModel* wxDataViewCtrlBase::GetModel() const return m_model; } +void wxDataViewCtrlBase::ExpandAncestors( const wxDataViewItem & item ) +{ + if (!m_model) return; + + if (!item.IsOk()) return; + + wxVector 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 ) @@ -1321,7 +1300,7 @@ bool wxDataViewSpinRenderer::GetValue( wxVariant &value ) const // wxDataViewChoiceRenderer // ------------------------------------- -#ifndef __WXGTK20__ +#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXMAC__) wxDataViewChoiceRenderer::wxDataViewChoiceRenderer( const wxArrayString& choices, wxDataViewCellMode mode, int alignment ) : wxDataViewCustomRenderer(wxT("string"), mode, alignment ) @@ -1933,10 +1912,12 @@ void wxDataViewTreeCtrl::OnCollapsed( wxDataViewEvent &event ) void wxDataViewTreeCtrl::OnSize( wxSizeEvent &event ) { #if defined(wxUSE_GENERICDATAVIEWCTRL) - wxSize size = GetClientSize(); - wxDataViewColumn *col = GetColumn( 0 ); - if (col) - col->SetWidth( size.x ); + // automatically resize our only column to take the entire control width + if ( GetColumnCount() ) + { + wxSize size = GetClientSize(); + GetColumn(0)->SetWidth(size.x); + } #endif event.Skip( true ); }